Redis
 sql >> база данни >  >> NoSQL >> Redis

Филтриращи елементи в Redis

Как прилагате последната схема в Redis? Възможно ли е?

Redis е без схема . Нека наречем това, от което се нуждаете, подход за съхранение на данни .

Един възможен подход е използването на HSET или HMSET за да добавите тези JSON обекти по идентификатор, където техният идентификатор е ключ и JSON текстът е стойността . Ще наречем този хеш като users:byid .

Това е първата част от проблема. Сега можете да получавате обекти по идентификатор .

Сега следващият проблем е, че искате да извлечете обекти в диапазон от това, което наричате класиране . За да получите това, трябва да съхранявате обектите си в сортиран набор с помощта на ZADD . Сортираните набори са сортирани по резултат и елементите се съхраняват с оценка . Звучи идеално за вашия случай на употреба!

Всъщност ще съхраните идентификаторите на обекти в целия сортиран набор:

zadd users:byranking 10 1 5 2

... където 10 е резултатът (т.е. действителната ви стойност на класирането) и 1 id и така нататък.

И така, как филтрирате елементи по класиране? Използване на ZRANGEBYSCORE :

  • Чрез класиране между 0 и 10, с изключение на 10. zrangebyscore users:byranking 0 (10
  • Чрез класиране между 0 и 10, включително 10. zrangebyscore users:byranking 0 10

Така нареченият ZRANGEBYSCORE ще ви даде идентификаторите на извлечените потребители. Как получавате техния JSON текст? Използване на HMGET :

 HMGET users:byid 1 2

...което ще получи и двата потребителя с id 1 и 2 , ако 10 класирането е включващо.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. socket.io функция за излъчване и Redis pub/sub архитектура

  2. Запитване на диапазон в Redis - Spring Data Redis

  3. Каква е добрата стратегия за групиране на подобни думи?

  4. Redis pub sub max абонати и издатели

  5. Redis срещу Memcached