11

次のようなredisキャッシュにハッシュがあります。

Hash         Key    Value
hashme:1    Hello   World
hashme:2    Here    Iam
myhash:1    Next    One

私の目標は、次のような CLI の出力としてハッシュを取得することです。

hashme
myhash

そのようなオプションがない場合、これも問題ありません。

 hashme:1
 hashme:2
 myhash:1

Redis API で関連するコマンドが見つかりませんでした。

助言がありますか ?

4

5 に答える 5

8

コマンドを使用してSCAN、Redis からすべてのキーを取得できます。次に、キーごとにTYPEコマンドを使用して、それがハッシュかどうかを確認します。

アップデート:

Redis 6.0 では、SCANコマンドはTYPEサブコマンドをサポートし、このサブコマンドを使用して、指定されたタイプのすべてのキーをスキャンできます。

SCAN 0 TYPE hash

またKEYS、本番環境でコマンドを使用しないでください!!! これは、Redis を長時間ブロックする可能性がある危険なコマンドです。

于 2016-12-14T07:55:10.103 に答える
2

redis (およびその他の K/v ストア) のアイデアは、インデックスを作成することです。データベースはそれを行いません。これはリレーショナル データベースとの大きな違いであり、パフォーマンスの向上に貢献します。

したがって、アプリがハッシュを作成するときは、そのキーを SET に入れます。アプリがハッシュを削除するときは、そのキーを SET から削除します。次に、ハッシュ ID のリストを取得するには、SMEMBERS を使用して SET の内容を取得します。

于 2016-12-14T07:37:07.620 に答える
1

connection.keys('*') これにより、データ型に関係なくすべてのキーが取得されます。これは、redis のすべてがキー値形式として格納されるためです。

于 2018-07-30T17:56:42.760 に答える
0

Pythonのredisの場合、以下のコマンドを使用してredis dbからキーを取得できます

def standardize_list(bytelist):
    return [x.decode('utf-8') for x in bytelist]

>>> standardize_list(r.keys())
['hat:1236154736', 'hat:56854717', 'hat:1326692461']

ここでr変数はredis接続オブジェクトです

于 2021-01-12T12:53:35.573 に答える