我有个案子:
# a = r.keys("test_*") ; a
{'test_1': '1', 'test_2': '2'}
# b = r.mget(a) ; b
['1', ''2]但test_1可能会在mget时超时。那么,我如何使keys和mget成为原子步骤
dict(zip(keys, r.mget(keys))总是能得到我想要的?
发布于 2016-11-01 05:05:16
为了使这两个命令原子地运行,您可以使用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很长一段时间。
https://stackoverflow.com/questions/40353827
复制相似问题