3

Redisでは、オブジェクトの配列を格納するために、オブジェクトにハッシュを使用し、そのキーをリストに追加する必要があります。

HMSET concept:unique_id name "concept"
...
LPUSH concepts concept:unique_id
...

リスト内のすべてのハッシュ値(またはオブジェクト)を取得したいのですが、リストにはハッシュキーしか含まれていないため、2ステップのコマンドが必要です。これは私がPythonでやっている方法です:

def get_concepts():

    list = r.lrange("concepts", 0, -1)
    pipe = r.pipeline()

    for key in list:
         pipe.hgetall(key)
    pipe.execute()

個々のアイテムを繰り返してフェッチする必要がありますか?より最適化できますか?

4

1 に答える 1

4

SORTコマンドを使用してこれを行うことができます。

SORT concepts BY nosort GET concept:*->name GET concept:*->some_key

*リスト内の各項目に展開されます。

ページネーションのために追加LIMIT offset countします。

ハッシュ内の各フィールド (取得する各フィールド) を列挙する必要があることに注意してください。

もう1つのオプションは、新しい(redis 2.6の)EVALコマンドを使用して、redisサーバーでLuaスクリプトを実行することです。これは、提案していることを実行できますが、サーバー側です。

于 2012-11-06T15:49:19.303 に答える