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

redis-py 4.1.0 リリース!Redis 6.2対応とモジュールサポートの進化ポイント

redis-py 4.1.0 がリリースされました!

Redis 向け Python クライアント「redis-py」は、10 年以上にわたって成長を続け、現在では週に 100 万回以上ダウンロードされる人気ライブラリとなっています。このたび、最新バージョンとなる redis-py 4.1.0 をリリースしましたのでお知らせします。

本リリースにより、Redis 6.2 のコマンドサポートはほぼ完全なものへと近づきました。既存コマンドで不足していたオプションへの対応、Sentinel 接続における SSL サポートの追加に加え、開発者体験(DX)全体の向上を図っています。また、Python 3.6 を基盤とした構造的な変更や、Python 3.10 への対応も含まれています。クライアントドキュメントも全面改訂し、Redis コマンドを探しやすく、誰もがプロジェクトに参加しやすい環境を整えました。さらに重要なのは、これらすべてが最小限の影響で実現されている点です。互換性の問題を気にせず、安心してアップグレードできます。

最新の Redis コマンドへの対応

Redis 6.2 では多数の新しいコマンドが追加されましたが、redis-py 4.1.0 を使えば、これらを Python からこれまで以上に簡単に利用できます。GETEX を使えばデータの取得と有効期限の更新を 1 つのコマンドで行え、CLIENT INFO や CLIENT KILL を使えばクライアントの切断などインスタンス管理も容易になります。redis-py 4.1.0 で追加された 30 以上のコマンドの中から、2 つの例を見てみましょう。

### GETEX
import redis
r = redis.Redis()
r.set('somekey', 'hello')
r.getex('somekey', ex=15)  # 'hello' を返す
r.ttl('somekey')           # 15 を返す


### CLIENT INFO / CLIENT KILL
import redis
r = redis.Redis()
r2 = redis.Redis()
r.client_setname('redis-py-c1')
r2.client_setname('redis-py-c2')

clients = [client for client in r.client_list()
           if client.get('name') in ['redis-py-c1', 'redis-py-c2']]
clients_by_name = dict([(client.get('name'), client)
                        for client in clients])
r.client_kill_filter(laddr=clients_by_name['redis-py-c2'].get('laddr'))

Redis モジュールのファーストクラスサポート

redis-py 4.0 で初めて導入された Redis モジュールのファーストクラスサポートは、4.1.0 でさらに拡充されました。RedisJSON、RediSearch、RedisTimeSeries、RedisGraph、RedisBloom に対応しています。そう、JSON データを Redis に簡単に保存できるのです。しかも保存するだけでなく、操作することも、検索することさえも可能です。ただし注意点として、JSON データを Redis に保存する場合は新しいデータ型として扱われるため、操作には JSON 専用のコマンドを使用する必要があります。以下に例を示します。

### JSON の保存と取得

import redis
r = redis.Redis()
myDoc = {'hello': 'world', 'colours': ['red', 'blue', 'green'], 'hmm': {'hello': 'again'}}
r.json().set('colors', '$', myDoc)
r.json().get('colors')

上記のような myDoc のようなドキュメントを扱う場合、実はドキュメントの一部を照会することで、複数のキーを一度に取得することもできます。

### JSON ドキュメントから「hello」という名前のキーをすべて取得
r.json().get('colors', '$..hello')

さらに、RedisJSON と RediSearch を組み合わせれば高度なドキュメント検索も実現でき、独自の Redis モジュールのサポートを追加することも可能です。そのすべてが redis-py 4.1.0 に揃っています。

redis-py による Redis クラスタ対応

ご存じでしたか? redis-py 4.1.0 には redis-cluster サポートが統合されており、2 つの簡単な方法で接続できます。スタンドアロンの Redis ノードとやり取りするときと同じ優れた操作性が、そのまま redis-py の一部になっています。

### クラスタへの接続
from redis.cluster import RedisCluster
r = RedisCluster.from_url('redis://4.5.6.8:6379')
nodes = r.get_nodes()

SSL 経由でクラスタに接続したい場合や、クラスのイニシャライザを使ったアプローチを好み、特定のノードをターゲットにコマンドを実行したいといったニーズにも対応しています。redis-py 4.1.0 なら、こうしたシナリオもすべてサポートします。

### クラスタへの接続(SSL・全ノード指定)
from redis.cluster import RedisCluster
r = RedisCluster('4.5.6.8', port=6379, ssl=True)
r.ping(target_nodes='all')

今後の展望

開発は止まることなく、私たちはフルスロットルで前進し続けます。今後は RedisAI など、より多くのモジュールへの対応を、同じくファーストクラスの体験として追加していく予定です。また、Redis 7 で提供される予定の RESP3 機能への対応や、コードベースの高速化も進めています。さらに、開発者ツールの整備にも取り組んでおり、redis-py への貢献や日々の開発作業がさらに快適になるよう努めていきます。

  1. Redis.ioが全面リニューアル――ドキュメント刷新とRedis Stack導入で開発者体験を拡張

    本日、私たちはRedis.ioの全面リニューアルをお知らせできることを大変嬉しく思います。Redis.ioはこれまで一貫してRedisの「ホーム」であり、新しいユーザーにとっての入り口となるサイトでした。今回のリニューアルでは、Redisのコアドキュメントを見直すとともに、サイトデザインのモダン化とインフラの刷新を実施しました。 この記事では、サイトリニューアルの背景にある狙い、改訂作業で採用した原則、そして今後の展開についてご紹介します。 Redis.ioの刷新 Redisは初回コミットから13年という長い道のりを歩んできました。現在では基盤となるデータベース技術として確立され、世界中

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

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