Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Filtrowanie elementów w Redis

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.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Replikacja Redis i redis sharding (klaster) różnica

  2. Docker nie uruchamia torów

  3. Heroku Redis — optymalizacja GUI i pamięci

  4. Tworzenie transakcji z walidacją w kliencie ServiceStack Redis

  5. Spring Redis — odczyt konfiguracji z pliku application.properties