【发布时间】:2015-09-10 20:35:16
【问题描述】:
我需要删除 10 000 个密钥。
-
有什么更好的方法:执行这种脚本
EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 "ROOT"
设置过期时间可能更好,Redis 会删除它们? 但是如何在控制台中使用 Lua 脚本呢?
该脚本(见上文)有效,因为 del comman 具有以下格式:
del key1 key2 ...
但 Expire 仅适用于 1 个密钥。
是否可以在 lua 脚本中实现?
例如:我的应用程序创建一些搜索结果缓存并为每个页面设置 ttl = 3600。但用户希望立即清除缓存,即删除所有匹配的键或为它们设置更小的过期时间。
【问题讨论】:
-
在推荐执行此操作的方法之前,您是否需要在一个原子批处理中删除所有键,还是您的要求更宽松?
-
我想在有 GUI 的 c# 应用程序中执行这个命令(批处理?)。
-
所以你知道原子操作会在 Redis 服务器运行时阻塞它,这符合要求(即不要在 Redis 需要保持对服务器可用的环境中运行它请求),对吧?
-
是的,你是对的。但我不想在我的客户端应用程序中运行循环,因为它不是最佳的且运行时间长。我需要为匹配某些模式的多个键设置过期。我看到在我的示例中使用“键”也不是一个好的解决方案。还有什么?
标签: redis