gpt4 book ai didi

lua - 如何使用lua删除所有redis键

转载 作者:可可西里 更新时间:2023-11-01 11:12:38 28 4
gpt4 key购买 nike

我正在尝试删除我的 redis 数据集中的所有 redis 键,除了一些也存储在 redis 中的 ID。

if matches[1] == 'del keys' then
list = redis:smembers("grid") <-- id list
for k,v in pairs(list) do
keys = redis:keys('*')
for k1,v1 in pairs(keys) do
if v ~= v1 then
run_bash("redis-cli KEYS *"..v1.."* | xargs redis-cli DEL")
end
end
end
return "done .."
end

但是它不起作用,我不知道我做错了什么

最佳答案

如果您要删除的键的数量远远超过您想要保留的键的数量,即 SET 中的键。您可以使用以下命令来完成这项工作,它应该更有效率:

redis-cli smembers s | xargs -I {} redis-cli move {} 1 && redis-cli flushdb  && redis-cli swapdb 0 1

这条命令假设你的数据存储在第0个数据库中,而第1个数据库是空的。

解释:

  1. 获取所有你想保留的 key
  2. 将它们移动到另一个空数据库
  3. 删除旧数据库中的所有键
  4. 交换新数据库和旧数据库

如果你坚持要在 Lua 中完成这项工作,只需调用你的 run_bash 函数来运行命令。

更新:

正如@Itamar Haber 在评论中提到的,如果您使用的是 Redis 4.0,则可以使用 FLUSHDB ASYNC 异步删除所有键。

关于lua - 如何使用lua删除所有redis键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51714755/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com