Jak implementujete poslední schéma v Redis? Je to možné?
Redis je bez schématu . Říkejme tomu, co potřebujete, přístup k ukládání dat .
Jedním z možných přístupů je použití HSET
nebo HMSET
přidat tyto objekty JSON podle id, kde jejich id je klíč a text JSON je hodnota . Tento hash budeme nazývat users:byid
.
Toto je první část problému. Nyní můžete získat objekty podle id .
Dalším problémem je, že chcete získat objekty v rozsahu, kterému říkáte hodnocení . Abyste toho dosáhli, musíte své objekty uložit do setříděné sady pomocí ZADD
. Seřazené sady jsou seřazeny podle skóre a položky jsou uloženy se skóre . Zní to perfektně pro váš případ použití!
Ve skutečnosti budete ukládat ID objektů v celé tříděné sadě:
zadd users:byranking 10 1 5 2
... kde 10
je skóre (tj. vaše skutečná hodnota hodnocení) a 1 id a tak dále.
Jak tedy filtrujete položky podle hodnocení? Pomocí ZRANGEBYSCORE
:
- Podle pořadí mezi 0 a 10, kromě 10.
zrangebyscore users:byranking 0 (10
- Podle hodnocení mezi 0 a 10, včetně 10.
zrangebyscore users:byranking 0 10
Takzvaný ZRANGEBYSCORE
vám poskytne ID získaných uživatelů. Jak získáte jejich text JSON? Pomocí HMGET
:
HMGET users:byid 1 2
...což získá oba uživatele s id 1
a 2
, pokud 10
hodnocení je včetně.