私の redis データベースには 3 つのハッシュがあります。
セット:最近の本
セット:バッドブック
セット:面白い本
すべてのハッシュには書籍 ID がキーとして含まれています。
すべてのハッシュから ID が 234 の本を削除したい。
これどうやってするの:
Lua スクリプト
パイプライン
他の?
私の redis データベースには 3 つのハッシュがあります。
セット:最近の本
セット:バッドブック
セット:面白い本
すべてのハッシュには書籍 ID がキーとして含まれています。
すべてのハッシュから ID が 234 の本を削除したい。
これどうやってするの:
Lua スクリプト
パイプライン
他の?
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();
}
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