Задать вопрос

Как извлечь N случайных неповторяющихся элементов из SET в Redis?

Есть SET c 1000 id, надо выбрать 3 случайных и неповторяющихся.


Решение «в лоб» — 3 раза сделать SRANDMEMBER, но нет гарантии, что не будет повторов.

Можно — контролировать повторы на уровне клиента и крутить цикл SRANDMEMBER до тех пор, пока полученный набор не будет уникальным, но это тоже несколько коряво.


Сортировать по случайной величине (что-то в духе SORT… BY RAND LIMIT 3 INTO… ) Redis не умеет.


В результате SORT… INTO… результирующий список будет типа LIST и сделать несколько раз SPOP оттуда нельзя.


Вдруг кто-то знает элегантный способ?
  • Вопрос задан
  • 2938 просмотров
Подписаться 3 Оценить Комментировать
Ответ пользователя avarjo К ответам на вопрос (2)
@avarjo
3 раза SPOP потом 3 раза добавить
Ответ написан