Jedna z věcí, které se rychle naučíte při práci s redis, je, že můžete navrhnout svou datovou strukturu podle vašich potřeb přístupu, zvláště pokud jde o vztahy (nejsou to nakonec relační databáze)
Neexistuje způsob, jak hledat podle "hodnoty" s časovou složitostí O(1), jak jste si již všimli, ale existují způsoby, jak přistupovat k tomu, co popisujete, pomocí redis. Zde je to, co bych doporučil:
- Uložte svá uživatelská data podle ID uživatele (např. hash), jak to již děláte.
- Mějte pro každé ID lektora další sadu obsahující všechna uživatelská ID, která odpovídají příslušnému ID lektora.
Může se to zdát jako duplikování dat vztahu, protože vaše uživatelská data by musela ukládat ID přednášky a vaše data přednášky by ukládala ID uživatele, ale to je (malá) cena, kterou musíte zaplatit, pokud chcete budovat vztahy v ne -úložiště relačních dat jako redis. V praxi to funguje dobře; paměť je jen zřídka úzkým hrdlem pro malé datové sady (myslím tisíce ID).
Abyste si udělali lepší obrázek o tom, jak lidé používající redis k modelování aplikací s relacemi, doporučuji si přečíst Návrh a implementace jednoduchého klonu Twitteru a zdrojový kód Lamernews, oba jsou napsány autorem redis Salvatore Sanfilippo.