Redis获取许多列表键的第一个元素
有没有一种方法可以获得许多列表的第一项(在不同的键中) 所以 对于不存在的列表,它应该以某种方式表示如下:Redis获取许多列表键的第一个元素,redis,Redis,有没有一种方法可以获得许多列表的第一项(在不同的键中) 所以 对于不存在的列表,它应该以某种方式表示如下: K1 = [1,2,3,4] K2 = [19, 24] > XXXX K1, K3, K2 ==> [1, None, 19] 假设我有2000个密钥需要更新,我不想进行2000个查询。我也无法获得全部2000个完整值,因为列表很长(比如说500个长度)您必须进行此数量的查询,每个列表的键对应一个查询。但是,可以通过以下方式优化工作流: 您必须进行这样数量的查询,每个列表
K1 = [1,2,3,4]
K2 = [19, 24]
> XXXX K1, K3, K2 ==> [1, None, 19]
假设我有2000个密钥需要更新,我不想进行2000个查询。我也无法获得全部2000个完整值,因为列表很长(比如说500个长度)您必须进行此数量的查询,每个列表的键对应一个查询。但是,可以通过以下方式优化工作流:
您必须进行这样数量的查询,每个列表的键对应一个查询。但是,可以通过以下方式优化工作流:
K1 = [1,2,3,4]
K2 = [19, 24]
> XXXX K1, K3, K2 ==> [1, None, 19]
$ redis-cli RPUSH K2 19 24
(integer) 2
$ redis-cli RPUSH K1 1 2 3 4
(integer) 4
$ redis-cli --eval mlrange.lua K1 K3 K2
1) "1"
2) (nil)
3) "19"
$ cat mlrange.lua
local reply = {}
for _, key in ipairs(KEYS) do
local elems = redis.call('LRANGE', key, 0, 0)
if elems then
reply[#reply+1] = elems[1]
else
reply[#reply+1] = false
end
end
return reply