密钥和mget不是原子的吗?

2024-06-26 03:39:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个案子:

# a = r.keys("test_*") ; a 
{'test_1': '1', 'test_2': '2'}
# b = r.mget(a) ; b
['1', ''2]

但是test_1可能会在mget时超时。那么我怎样才能把keysmget作为原子步骤来实现呢

 dict(zip(keys, r.mget(keys))

总是得到我想要的?你知道吗


Tags: test步骤keyszipdict原子案子mget
1条回答
网友
1楼 · 发布于 2024-06-26 03:39:57

为了使这两个命令以原子方式运行,可以使用lua脚本。你知道吗

 atomic.lua
local keys = redis.call('keys', '*')
local result = {}
for idx, key in ipairs(keys) do
    table.insert(result, key)     insert key
    table.insert(result, redis.call('get', key))      insert value
end
return result

然而,使用KEYS命令几乎总是个坏主意,因为它可能会长时间阻塞Redis。你知道吗

相关问题 更多 >