sql >> Databáze >  >> NoSQL >> Redis

Jak uložit výsledek hledání agregovaného stromu katalogu v Redis

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




  1. Vypočítejte průměr polí ve vložených dokumentech/pole

  2. Agregační proměnná MongoDB NOW

  3. může více klientů přistupovat ke stejnému seznamu současně, aniž by byli blokováni v Redis?

  4. MongoDB $setIntersection