我有一个Redis存储,其中有多个列表,并以list:name_of_list
进行索引。是否可以检索所有列表的键,其排序方式是元素数最多的列表是第一个,元素数最少的列表是最后一个?
答案 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]