我的 redis 数据库中有 3 个哈希:
套装:最近的书
集:坏书
套装:有趣的书
所有哈希都包含书籍 ID 作为键。
我想从所有哈希中删除具有 234 Id 的书。
我怎样才能做到这一点:
Lua 脚本
管道
其他?
我的 redis 数据库中有 3 个哈希:
套装:最近的书
集:坏书
套装:有趣的书
所有哈希都包含书籍 ID 作为键。
我想从所有哈希中删除具有 234 Id 的书。
我怎样才能做到这一点:
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