2010-12-17 8 views
18

Jestem nowym użytkownikiem Redisa i szukam konkretnej pomocy związanej z zestawami. Aby podać pewne tło: Buduję aplikację internetową składającą się z dużej liczby talii kart, z których każdy ma zestaw pojedynczych kart z unikatowymi identyfikatorami. Chcę, aby użytkownicy mieli losowo zestaw 5 losowanych kart z określonej talii.Poszukuję polecenia zestawu kopii (lub alternatywy) w Redis

Mój plan polega na przechowywaniu wszystkich identyfikatorów kart danej talii jako zestawu w Redis; następnie chcę użyć funkcji SPOP, aby narysować pojedyncze karty i usunąć je z zestawu, aby nie były rysowane ponownie w tym rozdaniu. Wydaje się, że ma to sens, kopiując "główny zestaw" identyfikatorów kart do nowego zestawu tymczasowego, wykonując trzaski na kopii, a następnie usuwając skopiowany zestaw, gdy skończę.

Ale: Nie mogę znaleźć żadnej funkcji Redis, która będzie sterować ustawioną kopią - najbliższa rzecz, jaką mogę zobaczyć, to także utworzyć pusty zestaw, a następnie "dołączyć" do pustego zestawu i "kopii głównej" ustawić w nowym (jeśli tymczasowym) zestawie z SUNIONSTORE, ale to wydaje się być hacky. Przypuszczam, że alternatywą byłoby skopiowanie ustawionych elementów do mojego "języka hosta" (node.js), a następnie ręczne wstawienie elementów z powrotem do nowego zestawu Redis, ale wydaje się to również niezgrabne. Prawdopodobnie istnieje lepsza trzecia opcja, o której nawet nie pomyślałem.

Czy robię coś złego - czy nie "dostaję" Redisa, czy też zestaw poleceń jest wciąż niedojrzały?

Odpowiedz

61
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" 

Baw się z Redis! Salvatore

+1

Dzięki @antirez, działało świetnie. –

+0

tak, sunionstore naprawdę ładne. – hahakubile

Powiązane problemy