gpt4 book ai didi

redis - 慢速 DEL 大键的替代方案

转载 作者:IT王子 更新时间:2023-10-29 06:01:50 26 4
gpt4 key购买 nike

即将推出的 Redis 4 中有异步 UNLINK,但在那之前,有哪些好的替代方案可以在没有阻塞或阻塞最少的情况下实现大型键集的 DELete?

重命名为某个唯一名称后跟 EXPIRE 1 秒是一个好的解决方案吗?首先重命名,以便原始 key 名称可供使用。立即释放内存不是当务之急,Redis 可以在可能的时候进行异步垃圾回收。

最佳答案

EXPIRE 不会消除延迟,只会延迟到服务器实际使该值过期(注意 Redis 使用近似过期算法)。一旦服务器实际使该值过期,它将发出一个 DEL 命令,该命令将阻止服务器直到该值被删除。

如果您无法使用 v4 的 UNLINK,删除大型集合的最佳方法是逐步删除它。这可以通过服务器端 Lua 脚本轻松实现以减少带宽,例如这个:

local target = KEYS[1]
local count = tonumber(ARGV[1]) or 100
local reply = redis.call('SPOP', target, count)
if reply then
return #reply
else
return nil
end

要耗尽,请使用要删除的键的名称重复调用上面的脚本,使用或不使用计数参数,直到您得到 nill Redis 回复。

关于redis - 慢速 DEL 大键的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43957666/

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