Redis は、オープン ソースの高性能キー/値ストレージ システムであり、キャッシュ、メッセージ キュー、カウンター、その他のシナリオで一般的に使用されます。 Python は、簡潔で効率的なスクリプト言語として、Web バックグラウンド処理、データ分析とマイニング、機械学習、人工知能などの分野でも広く使用されています。この記事では、Redis のインストール、Python Redis クライアント モジュールの使用、特定のアプリケーション ケースなど、Python での Redis のアプリケーションについて説明します。
1. Redis のインストール
$ tar xzf redis-5.0.3.tar.gz
$ cd redis-5.0.3
$ make
$ src /redis-server
$ src/redis-cli
127.0.0.1:6379> SET mykey "Hello Redis"
OK
127.0. 0.1:6379> GET mykey
"Hello Redis"
2. Python Redis クライアント モジュールの使用
Python での Redis の使用を容易にするために、次のことができます。 redis-py モジュールを Redis クライアント ライブラリとして使用します。 pip コマンドを使用してインストールできます。
$ pip install redis
import redis
rds = redis.Redis(host='localhost', port=6379, db=0)
where host とport はそれぞれ Redis サーバーのアドレスとポート番号、db は Redis データベースの番号を表し、デフォルトは 0 です。
rds.set('name', 'Alice')
name = rds.get('name')
print(name) # 出力: b'Alice '
このうち、set メソッドはキーと値のペアの設定に使用され、get メソッドはキーと値のペアの取得に使用されます。 get メソッドによって返されるデータ型はバイトであるため、decode メソッドを使用して文字列に変換する必要があることに注意してください。
pipe = rds.pipeline()
pipe.set('key1', 'value1')
pipe.set('key2', 'value2')
pipe.set('key3', 'value3')
pipe.execute()
インポート時間
pubsub = rds.pubsub()
pubsub.subscribe('channel')
rds.publish('channel', 'Hello')
time.sleep(1) # 1 秒待ちます
msg = pubsub.get_message()
print(msg) # 出力: {'type': 'message', 'channel': b'channel ' , 'data': b'Hello'}
このうち、subscribeメソッドはチャンネルに登録することを意味し、publishメソッドはメッセージを公開することを意味します。 get_message メソッドを使用してメッセージを取得します。
3. 特定のアプリケーション ケース
import time
import redis
class Cache:
def __init__(self): self.rds = redis.Redis(host='localhost', port=6379, db=0) def get(self, key): val = self.rds.get(key) if val: return val.decode() return None def set(self, key, val, ttl=60): self.rds.set(key, val, ex=ttl)
cache = Cache()
val =cache.get('key')
if not val:
# 从数据库中查询数据 val = 'value' cache.set('key', val, ttl=60)
print(val)
Cache クラスは Redis キャッシュの実装をカプセル化しており、get メソッドと set メソッドを使用してキャッシュ データを取得または設定できます。データを取得する前にキャッシュにクエリを実行します。キャッシュにデータが存在しない場合は、データベースからデータを読み取り、キャッシュします。
インポート時間
import redis
class Lock:
def __init__(self): self.rds = redis.Redis(host='localhost', port=6379, db=0) self.locked = False def acquire(self, lockname, ttl=60): identifier = str(time.time()) self.locked = self.rds.setnx(lockname, identifier) if self.locked: self.rds.expire(lockname, ttl) return self.locked def release(self, lockname): if self.locked: self.rds.delete(lockname)
lock = Lock()
if lock.acquire('mylock'):
# 处理业务逻辑... lock.release('mylock')
Lock クラスは分散ロックの実装をカプセル化しており、acquire メソッドと release メソッドを使用してロックを取得または解放できます。ロックを取得するとき、ロックがすでに占有されている場合は False を返し、ロックが占有されていない場合はロックを取得して有効期限を設定します。
要約すると、Redis は Python で広く使用されており、キャッシュ、分散ロック、メッセージ キュー、カウンター、その他のシナリオで使用できます。 Python Redis クライアント ライブラリは、便利なデータ操作のためのシンプルで使いやすい API も提供します。
以上がPython での Redis のアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。