スクリプト開発 / コネクターオブジェクト DFF.CONN / Redis
Redis コネクター操作オブジェクトは、主に Redis の操作方法を提供します。
DFF.CONN(...) のパラメータは次のとおりです:
| パラメータ | 型 | 必須 / デフォルト値 | 説明 |
|---|---|---|---|
connector_id |
str | 必須 | コネクター ID |
database |
str | None |
コネクター構成のデータベース番号を上書き |
client_name |
str | None |
今回の接続のクライアント名を設定 |
Redis Cluster では論理データベースを選択できないため、クラスター接続では database は無視されます。
メッセージ購読
コネクターでのメッセージ購読については、スクリプト開発 / コネクター購読 を参照してください
.query(...)
Redis の execute_command(...) を直接呼び出してコマンドを実行します。パラメータは次のとおりです:
| パラメータ | 型 | 必須 / デフォルト値 | 説明 |
|---|---|---|---|
command |
str | 必須 | Redis コマンド |
*args |
- | - | Redis コマンド引数 |
**kwargs |
- | - | redis-py に渡すパラメータ |
| 例 | |
|---|---|
1 2 3 | |
.query(...) は redis-py の戻り値を変換しません。文字列結果は通常 bytes です。実際の操作では、データ形式に応じて変換できます:
| Python | |
|---|---|
1 2 3 4 5 6 7 8 9 10 | |
.run(...)
redis-py のメソッド名に従ってクライアントメソッドを呼び出します。シグネチャは .run(command, *args, **kwargs) です。例:
| 例 | |
|---|---|
1 | |
command は大文字と小文字を区別する redis-py メソッド名で、通常は小文字を使用します。戻り値は対応する redis-py メソッドと同じです。
一般的な便利メソッド
コネクターは以下の便利メソッドを提供します。読み取り系メソッドは、対応する実装で bytes を再帰的に UTF-8 文字列にデコードするため、.query(...) の元の戻り値とは異なる場合があります。
データベースとキー
| メソッド | 説明 |
|---|---|
.ping() |
接続を確認 |
.info() |
Redis 情報を取得 |
.dbsize() |
現在のデータベースのキー数を取得 |
.type(key) |
キーの型を取得。キーが存在しない場合は None を返す |
.memory_usage(key, samples=0) |
キーが使用するメモリを取得 |
.keys(pattern='*', limit=None) |
SCAN を使用して一致するキーを取得。返却数を制限できる |
.exists(key) |
キーの存在を判定し、bool を返す |
.expire(key, expires) |
秒単位の有効期限を設定 |
.expireat(key, timestamp) |
絶対有効期限を設定 |
.ttl(key) / .pttl(key) |
秒単位 / ミリ秒単位の残り時間を取得 |
.rename(key, new_key) |
キー名を変更 |
.renamenx(key, new_key) |
新しいキーが存在しない場合のみリネーム |
.delete(keys) |
キーまたはキーリストを削除し、削除数を返す |
文字列とハッシュ
| メソッド | 説明 |
|---|---|
.set(key, value, expires=None, not_exists=False, exists=False, get_old_value=False) |
値を設定し、有効期限および NX、XX、GET オプションを設定できる |
.mset(key_values) |
辞書のキーと値を一括設定 |
.get(key) |
単一の値を取得してデコード |
.mget(keys) |
一括取得し、{key: value} を返す |
.getset(key, value) |
新しい値を設定し、古い値を返す |
.incr(key) / .incrby(key, step=1) / .incrbyfloat(key, step=1) |
数値をインクリメント |
.hkeys(key, pattern='*', with_values=False) |
HSCAN を使用してフィールドを取得。同時に値を返すこともできる |
.hset(key, field=None, value=None, field_values=None) |
1 つのフィールドまたはフィールドマップを設定 |
.hmset(key, field_values) |
フィールドを一括設定 |
.hsetnx(key, field, value) |
フィールドが存在しない場合のみ設定 |
.hget(key, field) / .hgetall(key) |
フィールド値を取得してデコード |
.hmget(key, fields) |
一括取得し、{field: value} を返す |
.hstrlen(key, field) / .hstrlenall(key) |
1 つまたはすべてのフィールド値のバイト長を取得 |
.hincr(key, field) / .hincrby(key, field, step=1) / .hincrbyfloat(key, field, step=1) |
フィールドの数値をインクリメント |
.hdel(key, field) |
1 つのフィールドまたはフィールドリストを削除 |
リスト、セット、ソート済みセット
| メソッド | 説明 |
|---|---|
.lpush(key, value) / .rpush(key, value) |
左側 / 右側から 1 つの値または値リストをプッシュ |
.lpop(key, count=None) / .rpop(key, count=None) |
左側 / 右側から 1 つまたは複数の値をポップ |
.blpop(key, timeout=0) / .brpop(key, timeout=0) |
ブロッキングポップ |
.rpoplpush(key, dest_key=None) |
ポップして別のリストにプッシュ |
.brpoplpush(key, dest_key=None, timeout=0) |
ブロッキングでポップしてプッシュ |
.llen(key) / .lrange(key, start=0, stop=-1) |
リストの長さ / 範囲を取得 |
.ltrim(key, start, stop) |
リストをトリミング |
.push(...) / .pop(...) / .bpop(...) |
.lpush(...) / .rpop(...) / .brpop(...) のエイリアス |
.sadd(key, member) / .srem(key, member) |
1 つのメンバーまたはメンバーリストを追加 / 削除 |
.scard(key) / .smembers(key) / .sismember(key, member) |
セットの要素数、メンバーの取得、またはメンバーかどうかの判定 |
.zadd(key, member_scores) / .zrem(key, member) |
ソート済みセットのメンバーを追加 / 削除 |
.zcard(key) |
ソート済みセットのメンバー数を取得 |
.zrange(key, start=0, stop=-1, with_scores=False) |
位置に基づいてメンバーを取得 |
.zrangebyscore(key, min_score='-inf', max_score='+inf', with_scores=False) |
スコアに基づいてメンバーを取得 |
.publish(...)
Redis チャネルにメッセージをパブリッシュし、メッセージを受信した購読者数を返します。.pub(...) はそのエイリアスです。
| 例 | |
|---|---|
1 | |
拡張メソッド
| メソッド | 説明 |
|---|---|
.eval(lua_script, key_count, *args) |
Lua スクリプトを実行し、戻り値をデコード |
.push_limit(key, value, limit) |
左側からプッシュした後、リストを指定された長さに制限 |
.get_pattern(pattern) |
マッチするキーと値を取得し、{key: value} を返す |
.delete_pattern(pattern) |
マッチするすべてのキーを削除 |
.hget_pattern(key, pattern) |
マッチするハッシュフィールドと値を取得 |
.lock(lock_key, lock_value, max_lock_time) |
SET EX NX を使用してロックを取得 |
.extend_lock_time(lock_key, lock_value, max_lock_time) |
ロック保持者を検証後、有効期限を延長 |
.unlock(lock_key, lock_value) |
ロック値が一致する場合のみロックを解放 |