我的redis数据库中有3个哈希:
设置:recentbooks
设置:badbooks
设置:funnybooks
所有哈希都包含书ID作为键。
我想从所有哈希中删除包含234 Id的书。
我该怎么做:
Lua Scripting
管道
其他
答案 0 :(得分: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();
}
答案 1 :(得分: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