Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis获取许多列表键的第一个元素_Redis - Fatal编程技术网

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