1

私の redis データベースには 3 つのハッシュがあります。

セット:最近の本

セット:バッドブック

セット:面白い本

すべてのハッシュには書籍 ID がキーとして含まれています。

すべてのハッシュから ID が 234 の本を削除したい。

これどうやってするの:

  • Lua スクリプト

  • パイプライン

  • 他の?

4

2 に答える 2

2

ServiceStack redis クライアント API を使用すると、次のように削除リクエストをパイプライン化できます。

var client = new RedisClient("localhost", 6379);

using (var pipeline = client.CreatePipeline())
{
    pipeline.QueueCommand(r => r.RemoveEntryFromHash("set:recentbooks", "234"));
    pipeline.QueueCommand(r => r.RemoveEntryFromHash("set:badbooks", "234"));
    pipeline.QueueCommand(r => r.RemoveEntryFromHash("set:funnybooks", "234"));

    // All deletes will be sent at once.
    pipeline.Flush();
}
于 2013-10-18T22:32:41.070 に答える
1

LUA スクリプトを使用すると、簡単です。

EVAL "redis.call('HDEL',KEYS[2],KEYS[1]);
      redis.call('HDEL',KEYS[3],KEYS[1]);
      redis.call('HDEL',KEYS[4],KEYS[1]);" 
      4 234 set:recentbooks set:badbooks set:funnybooks

ServiceStack を使用したことはありませんが、上記の情報を使用して、ServiceStack で redis クライアントを呼び出してキーを削除するために必要なものを確認できます。

lua スクリプトをファイルに記述して、次のようにパラメーターを指定して呼び出すこともできます。

redis-cli> EVAL "$(cat myscript.lua)" 4 234 set:recentbooks set:badbooks set:funnybooks
于 2013-10-18T20:43:24.597 に答える