Jak zaimplementować ostatni schemat w Redis? Czy to możliwe?
Redis jest bez schematu . Nazwijmy, czego potrzebujesz, podejściem do przechowywania danych .
Jednym z możliwych podejść jest użycie HSET
lub HMSET
aby dodać te obiekty JSON według id, gdzie ich id to klucz a tekst JSON to wartość . Nazwiemy ten skrót jako users:byid
.
To jest pierwsza część problemu. Teraz możesz pobierać obiekty według identyfikatora .
Teraz następnym problemem jest to, że chcesz pobrać obiekty z zakresu, który nazywasz rankingiem . Aby to uzyskać, musisz przechowywać swoje obiekty w posortowanym zestawie za pomocą ZADD
. Posortowane zestawy są posortowane według punktacji, a elementy są przechowywane z punktacją . Brzmi idealnie w Twoim przypadku użycia!
Właściwie zamierzasz przechowywać identyfikatory obiektów w całym posortowanym zestawie:
zadd users:byranking 10 1 5 2
... gdzie 10
to wynik (tj. Twoja rzeczywista wartość w rankingu) i 1 id i tak dalej.
Jak więc filtrować przedmioty według rankingu? Korzystanie z ZRANGEBYSCORE
:
- Według rankingu od 0 do 10, z wyłączeniem 10.
zrangebyscore users:byranking 0 (10
- Według rankingu od 0 do 10, w tym 10.
zrangebyscore users:byranking 0 10
Tak zwany ZRANGEBYSCORE
poda identyfikatory pobranych użytkowników. Jak otrzymujesz ich tekst JSON? Korzystanie z HMGET
:
HMGET users:byid 1 2
...co spowoduje, że obaj użytkownicy będą mieli id 1
i 2
, jeśli 10
ranking jest inkluzywny.