1

我的 redis 数据库中有 3 个哈希:

套装:最近的书

集:坏书

套装:有趣的书

所有哈希都包含书籍 ID 作为键。

我想从所有哈希中删除具有 234 Id 的书。

我怎样才能做到这一点:

  • 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 回答