Ищете команду набора копий (или альтернативу) в Redis - PullRequest
19 голосов
/ 18 декабря 2010

Я новичок в Redis и ищу какую-то конкретную помощь по сетам. Чтобы подвести итог: я создаю веб-приложение, которое состоит из большого количества карточных колод, каждая из которых имеет набор отдельных карточек с уникальными идентификаторами. Я хочу, чтобы у пользователей был случайным образом выбранный набор из 5 карт из определенной колоды.

Мой план состоит в том, чтобы все идентификаторы карт данной колоды сохранялись как набор в Redis; затем я хочу использовать функцию SPOP, чтобы вытянуть отдельные карты и удалить их из набора, чтобы они не были разыграны снова в этой руке. Казалось бы, имеет смысл сделать это, скопировав «основной набор» колоды идентификаторов карт в новый временный набор, выполнив извлечение копии, а затем удалив скопированный набор, когда я закончу.

Но: я не могу найти какую-либо функцию Redis для управления копией набора - самое близкое, что я вижу, это также создать пустой набор, а затем «соединить» пустой набор и «главную копию» набора в новый (если временный) набор с SUNIONSTORE, но это кажется хакерским. Я полагаю, что альтернативой было бы скопировать элементы набора в мой «основной язык» (node.js), а затем вручную вставить элементы обратно в новый набор Redis, но это также кажется неуклюжим. Вероятно, есть лучший третий вариант, о котором я даже не подумал.

Я что-то не так делаю - я не получаю Redis или набор команд все еще немного незрел?

1 Ответ

62 голосов
/ 18 декабря 2010
redis> sadd mydeck 1
(integer) 1
redis> sadd mydeck 2
(integer) 1
redis> sadd mydeck 3
(integer) 1
redis> smembers mydeck
1) "1"
2) "2"
3) "3"
redis> sunionstore tempdeck mydeck
(integer) 3
redis> smembers mydeck
1) "1"
2) "2"
3) "3"
redis> smembers tempdeck
1) "1"
2) "2"
3) "3"

Веселись вместе с Redis!Salvatore

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