Redis: сортировка ключей из списков по количеству элементов - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть redis-store с несколькими списками, индексированными по list:name_of_list.Можно ли получить ключи всех списков, отсортированных таким образом, чтобы список с наибольшим количеством элементов был первым, а список с наименьшим количеством элементов - последним?

1 Ответ

0 голосов
/ 06 февраля 2019

Не напрямую, вам нужно получить длины списков, затем отсортировать их, а затем получить элементы каждого списка.Вы можете сделать это в своем клиенте, или, если хотите, вы можете сделать это в функции 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...