Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Upstash RedisSDKv1.0.0の発表

本日、@upstash/redisを発表します v1.0.0。

@upstash/redis サーバーレス向けに設計され、Cloudflareワーカーと高速に互換性のある唯一のコネクションレス(HTTPベース)Redisクライアントです。

v1.0.0の新機能

バージョン1.0.0は、以前のライブラリを完全に書き直したものです。私たちが受け取った最大の機能リクエストの中には、パイプラインのサポートとタイプセーフティの改善がありました。これらの新機能の性質により、v1 下位互換性はありませんが、基盤となるREST APIが変更されていないため、古いバージョンは引き続き機能します。

ほとんどのコマンドは、redis.setex("key", 2, "value")のようにRedisで使用されているのと同じ構文に従います。 。 hsetなどの他の場合 自分で行う必要のある(逆)シリアル化の量を減らすために、より使いやすいAPIを提供しています:

await redis.hset("123", {
  id: "123",
  name: { first: "andreas" },
});

これは内部でhset 123 id 123 name {"first":"andreas"}にシリアル化されます そしてUpstashに送られました。オブジェクトは自動的にシリアル化されるため、自分でシリアル化する必要はありません。

コマンドの使用方法がわからない場合は、エディターがインテリセンスをサポートしていれば、typescriptが役立ちます。また、すべてを網羅し、例として役立つ可能性のあるテストも確認してください。

最も重要な変更点は次のとおりです:

  • 明示的な認証
  • さまざまなプラットフォーム(Node.js、Cloudflareワーカー、高速)向けに最適化
  • 改良された型システム
  • エラーがスローされます
  • パイプラインのサポート
明示的な認証

特定の機能のみをインポートする場合の自動認証により、実際の動作が予想と異なる問題が発生し、防止できた可能性のある問題のデバッグに時間を浪費することになりました。特に、環境変数を異なる方法で処理する異なるプラットフォームで。そのため、クライアントを明示的に認証する必要があります。

ほとんどのユースケースでは、それらを環境に保存し、Redisクライアントのセットアップに1回だけ必要になることを理解しています。 @upstash/redis ここにショートカットを提供します:あなたがする必要があるのはUPSTASH_REDIS_REST_URLを設定することだけです およびUPSTASH_REDIS_REST_TOKEN 環境変数として、選択したデプロイメントプラットフォームにロードします。適切に構成されていない場合、エラーがスローされます。

Node.js

import { Redis } from "@upstash/redis";
const redis = Redis.fromEnv();
Cloudflareワーカー
import { Redis } from "@upstash/redis/cloudflare";
const redis = Redis.fromEnv();
タイプスクリプト

新しいバージョンでは、すべてのコマンドに対して厳密な型がサポートされており、間違いを後でではなく早く見つけることができます。型はオプションであり、デフォルトでは、可能な場合は型を推測します。

import { Redis } from "@upstash/redis";
const redis = new Redis({
  /* auth */
});

type User = {
  id: string;
  email: string;
};

const user = {
  id: "abc",
  email: "andreas@upstash.com",
};

await redis.set<User>("userKey", user);

const user = await redis.get<User>("userKey");
// -> user is typed as User

Redisは、オプションの引数と潜在的に異なる組み合わせを持つ多くのコマンドを提供します。 Typescriptを使用すると、1行のコードを実行する前に、無効な組み合わせをチェックできます。

redis.set("key", "value", {
  ex: 60, // expire in 60 seconds
  nx: true, // only create if the key does not yet exist
});
エラー処理

以前のバージョンは、多かれ少なかれUpstashHTTPAPIから生の応答を返しました。そのためには、エラーが存在するかどうかを確認してからスローする必要がありました。JavaScriptでは、通常、問題が発生したときにエラーがスローされると予想されるため、これを実行しています。

今後、コマンドはデータのみを返し、問題が発生した場合は自動的にスローします。

// `v0.2.1`
const { data, error } = await set("key", "value");
if (error) {
  throw new Error(error);
}
// '^v1.0.0'
const data = await redis.set("key", "value");
パイプライン

Upstashは、HTTPを介してRedisコマンドをパイプライン化して、リクエストをまとめてバッチ送信し、まとめて送信します。これにより、特にサーバーレス機能を使用する場合に、実行時間を短縮し、コストを節約できます。

:::noteパイプラインの実行はアトミックではありません。パイプライン内の各コマンドは順番に実行されますが、他のクライアントから送信されたコマンドはパイプラインとインターリーブできます。:::

既存のredisから新しいパイプラインを作成できます インスタンス。

import { Redis } from "@upstash/redis";
const redis = new Redis({
  /* auth */
});

const p = redis.pipeline();

複数のコマンドを連鎖できるようにパイプラインAPIを設計しました。パイプラインにすべてのコマンドを追加したら、リクエストを送信して、すべての要素が同じ順序でコマンドに対応する配列を受信できます。

p.set("key", 2);

// or chain directly
p.incr("key").decrby("key", 2);

const res = await p.exec();
// res[0] => "OK"   | the result of p.set("key", 2)
// res[1] => 3      | the result of p.incr("key")
// res[2] => 1      | the result of p.decrby("key", 2)
どのように始めればよいですか?

console.upstash.comにアクセスして、新しいデータベースを作成します。次に、クイックスタートガイドの指示に従います

以前に古いバージョンを使用したことがある場合は、GitHubのMigratetov1セクションをチェックして開始できます。

将来の作業

Upstash Redisは最近、redis v6.2と互換性のあるアップデートを受け取りました 、これには新しいコマンドが含まれ、他のコマンドが拡張されます。 @upstash/redis すぐにこれらをサポートします。

追加のプラットフォームとして、近い将来、denoをサポートする予定です。

最後の言葉

これは大きな変更であり、更新するにはユーザーの作業が必要になります。あなたの経験を教えてください。

Upstash製品を使用する際のエクスペリエンスを向上させるためのフィードバックを歓迎します。バグについては、GitHub、Discord、Twitterに連絡することを躊躇しないでください。貢献に興味がある場合は、機能をリクエストするか、サポートが必要です。


  1. サーバーレスクラウド、Next.js、UpstashRedisを使い始める

    サーバーレスクラウドは、Serverless Frameworkを作成したチームのバックエンドプラットフォームです。 。単一のプラットフォームでクラウドランタイム、CLI、SDKを提供し、開発者の生産性を向上させます。この投稿では、サーバーレスRedis(Upstash)からデータを読み取り、サーバーレスクラウドにデプロイするNext.jsアプリケーションを構築します。 セットアップ まず、npm init cloudを使用してサーバーレスクラウドを開始します ? Do you want to create a new app or work on an existing one? ℹ Y

  2. UpstashRedisを使用したNetlifyグラフのグローバルキャッシュ

    昨日、NetlifyはNetlify Graphと呼ばれる新機能を発表しました。私の同僚は最近、写真の同様の欠落部分を強調し、Netlifyは解決に向けて良い一歩を踏み出しました。 基本的に、Netlify Graphは、開発者がWebアプリのGraphQL API呼び出しを構築するのに役立ちます。NetlifyDashboardでGraphQLリクエストを準備した後、シングルクリックでクライアントコードをプロジェクトに挿入できます。 Netlify関数をサードパーティサービスと一緒に使用することには欠点があります。クライアント側のリクエストは、最初にNetlifyバックエンド(関数)に送