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

Upstash Redis Python SDK v1.0.0登場 – コネクションレスでサーバーレス環境に最適なHTTPクライアント

Upstashは、Python向けRedisクライアントライブラリ「upstash-redis」のバージョンv1.0.0をリリースしました。GitHubおよびPyPIから入手可能です。

このパッケージは、コネクションレスなHTTPベースのクライアントとして設計されており、AWS LambdaやGoogle Cloud Functionsなどのサーバーレス環境、あるいはTCPよりもHTTPが好まれるあらゆる環境での利用に適しています。

新機能・変更点

新しいバージョンでは、すべてのコマンドに対して使用例を含むPythonのdocstring(ドキュメンテーション文字列)が追加されました。エディタ上で各コマンドの使い方をすぐに確認できるようになり、開発体験が大幅に向上しています。

Upstash Redis Python SDK v1.0.0登場 – コネクションレスでサーバーレス環境に最適なHTTPクライアント

また、各コマンドのドキュメントとサンプルコードは、Upstash Redis Python公式ドキュメントでも確認できます。

クイックスタート

まず、パッケージをインストールします。

pip install upstash-redis

次に、Redisクライアントを作成します。

from upstash_redis import UpstashRedis
 
redis = Redis(url="UPSTASH_REDIS_REST_URL", token="UPSTASH_REDIS_REST_TOKEN")
 
redis.set("key", "value")

URLとトークンをコンストラクタに渡す代わりに、環境変数UPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKENを利用することもできます。

from upstash_redis import UpstashRedis
 
redis = Redis.from_env()
 
redis.set("key", "value")

さらに、SDKはasyncioaiohttpパッケージを使った非同期処理にも対応しています。

import asyncio
from upstash_redis.asyncio import Redis
 
async def main():
 redis = Redis.from_env()
 
 await redis.set("key", "value")
 
asyncio.run(main())

サーバーレス環境で許可されている場合は、クライアントをリクエストハンドラの外側で初期化しておくことをおすすめします。こうすることで、関数がウォームな状態である間はクライアントを再利用でき、パフォーマンスの向上が期待できます。

一部コマンドにおける値の型変更

これまでsethsetなどの一部のコマンドは、値の型としてAnyを受け入れ、内部でjson.dumpsを使って文字列に変換していました。しかし、この挙動は一部のコマンドで混乱を招くことがありました。

今回のバージョンでは、新しい型ValueTが導入され、strintfloatboolのみを受け入れるようになりました。

ValueT = Union[str, int, float, bool]
 
def set(
 self,
 key: str,
 value: ValueT,
 ...
) -> Optional[str]: ...

従来の挙動自体は引き続きサポートされていますが、型定義が変更されています。

# 動作するが、型エラーが出る
redis.set("key", {"foo": "bar"})
 
# 正常に動作
redis.set("key", json.dumps({"foo": "bar"}))

GeoコマンドがDictの代わりにGeoSearchResultを返すように

geosearchおよびgeoradiusコマンドは、辞書型の代わりに、より扱いやすいGeoSearchResultオブジェクトを返すようになりました。

Set系コマンドがListを返すように変更

sdiffsunionsintersmembersメソッドの戻り値が、SetからListに変更されました。これにより、結果をイテレーションする際の余分なSet生成が不要になります。必要であれば、ユーザー自身がリストをセットに変換することも可能です。

まとめ

新しいバージョンのパッケージをぜひお試しください。今後はPython SDKへのpipelineおよびjsonコマンドのサポート追加も計画されています。

また、Python用レート制限ライブラリや、Pythonに関するその他のブログ記事も併せてご覧ください。

ご質問やフィードバックがある場合は、X(旧Twitter)またはDiscordまでお気軽にお問い合わせください。

  1. Redis EnterpriseとCohesity SmartFiles連携で実現するデータベースの永続性とバックアップ

    私たちはこのほど、Redis Technical Partner Programへのオンボーディングの一環として、Cohesityチームと協力し、HeliosとRedis Enterpriseの統合検証を行う機会を得ました。Helios上で動作するCohesity SmartFilesは、データの保存場所に関わらず、非構造化データを一元的に可視化し、グローバルに管理できるサービスです。Redis Enterpriseの文脈では、SmartFilesはデータベーススナップショットの単一ビューを提供します。 なぜ永続性(Persistence)やバックアップにこだわる必要があるのでしょうか? 実

  2. Fastly ComputeでUpstash Redisを活用する方法

    この記事では古いバージョンのFastly CLIを使用しています。最新の手順については、こちらの記事をご確認ください。 この記事では、Fastly Compute@Edge上で動作するシンプルなアプリケーションを作成します。このアプリケーションはUpstash Redisにアクセスし、ページビュー数を記録します。 モチベーション エッジコンピューティングは、近年最も注目されているトレンドのひとつです。CloudflareやFastlyといったCDNサービスは、ユーザーが自社のエッジインフラストラクチャ上でアプリケーションを実行できるようにしました。これにより、開発者はグローバルに分散した高