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ě.