удалить пересечение двух множеств A и B из множества A в redis - PullRequest
0 голосов
/ 06 июля 2019

У меня есть два набора в Redis - ProcessedUrls и PendingUrls. Я хочу сделать в одном запросе redis следующее: Удалите все ключи, находящиеся как в ожидающих, так и в обработанных наборах, из набора Pendings, после чего верните 100 (или любое другое число - X) значений из набора Pending.

Должен ли я сделать это через Lua (язык сценариев redis на стороне сервера)? Я думаю, что есть более простой способ.

Спасибо за помощь

1 Ответ

1 голос
/ 07 июля 2019

Вы можете использовать команду SDIFFSTORE, чтобы получить элементы сравнения и сохранить их в ожидающем наборе:

SDIFFSTORE PendingUrls PendingUrls ProcessedUrls

Затем вы можете использовать команду SRANDMEMBER PendingUrls N, чтобы случайным образом получить N членов в ожидающем наборе.

Если вы хотите сделать эти две операции атомарными, оберните их в скрипт Lua или транзакцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...