Redis:按元素数量对列表中的键进行排序

时间:2019-02-05 17:47:56

标签: redis

我有一个Redis存储,其中有多个列表,并以list:name_of_list进行索引。是否可以检索所有列表的键,其排序方式是元素数最多的列表是第一个,元素数最少的列表是最后一个?

1 个答案:

答案 0 :(得分:1)

不是直接,您需要获取列表的长度,然后对它们进行排序,然后获取每个列表的元素。您可以在客户端中执行此操作,也可以根据需要在Lua函数中执行此操作,该功能将充当某种存储过程。

其要点,在Python /伪代码中将如下所示:

lists = ['list1', 'list2', 'list3']
lengths = [client.llen(lst) for lst in lists]

# zip and sort the lists and their lengths 
keys_and_lengths = sorted(zip(lists, lengths), key=lamda pair: pair[1], reverse=True)

# Get the members, you can chain them in various ways. You can also use a pipeline
members = [client.lrange(key, 0, -1) for key, _ in keys_and_lengths]