Подтвердить что ты не робот

Поиск команды набора копий (или альтернативы) в Redis

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

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

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

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

4b9b3361

Ответ 1

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