Как прилагате последната схема в 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 класирането е включващо.