Pokud chcete rychlost, měli byste se při ukládání struktury nebo „mezipaměti“ v redis připravit co nejvíce. Pokud produkty skladujete v HSET
a přidejte počítadla kategorií (jedno na kategorii) vedle svého člena 'produktová data' v tomto HSET
, můžete použít HINCRBY
pro zvýšení/snížení počítadel.
Obecně (navržení mezipaměti Redis pro vaše potřeby):měli byste se pokusit zabránit načítání dat, která nepotřebujete.
Pro ukládání (/aktualizaci/mazání) a načítání agregovaného přehledu doporučuji použít skript Lua. Skripty Lua se spouštějí na serveru Redis. ServiceStack je podporuje (SCRIPT LOAD
+ EVALSHA
nebo jednoduše EVAL
) a můžete také vyzkoušet klientský modul BookSleeve C# (který používáme a je o něco rychlejší. 'faster' :dobrý design dat redis je samozřejmě na prvním místě). Klient BookSleeve C# se zaměřuje na vícevláknové redis pipelining, což je pravděpodobně to, co chcete při práci s velkými datovými sadami. Zřetězení by mělo být možné také pomocí ServiceStack.
Pokud mají kategorie a produkty celočíselné ID, můžete je také zkombinovat s ZSET
, kde můžete ID použít jako pole skóre. S ZRANGEBYSCORE
můžete přímo získat 'záznam'. Tato technika je bezpečná, pokud vaše ID používají 15 číslic nebo méně a nepoužívejte desetinnou část 'skóre'. Takže ID musí zůstat v rozsahu -999999999999999 až 999999999999999. Poznámka:Tato omezení existují, protože server Redis ve skutečnosti interně ukládá skóre (float) jako reprezentaci redis-řetězce.
Doufám, že to pomůže, TW