sql >> Database teknologi >  >> NoSQL >> Redis

Sådan gemmer du aggregeret katalogtræsøgeresultat i Redis

Hvis du ønsker hastighed, bør du forberede dig så meget som muligt, når du gemmer strukturen eller 'cache' i redis. Hvis du gemmer produkterne i en HSET , og tilføj kategoritællerne (én pr. kategori) sammen med dit "produktdata"-medlem i denne HSET , kan du bruge HINCRBY for at øge/sænke tællerne.

Generelt (design af en Redis-cache til dine behov):du bør forsøge at forhindre at hente data, som du ikke har brug for.

Jeg anbefaler at bruge et Lua-script til lagring (/opdatering/sletning) samt til at hente din samlede rapport. Lua-scripts udføres på Redis-serveren. ServiceStack understøtter dem (SCRIPT LOAD + EVALSHA eller blot EVAL ), og du kan også prøve BookSleeve C#-klientmodulet (som vi bruger og er lidt hurtigere. 'hurtigere' :godt redis-data design kommer selvfølgelig først). BookSleeve C#-klienten fokuserer på multithreaded redis pipelining, hvilket sandsynligvis er det, du ønsker, når du har at gøre med store datasæt. Pipelining burde også være mulig med ServiceStack.

Hvis kategorierne og produkterne har et heltals-id, kan du også kombinere dette med en ZSET , hvor du kan bruge ID'et som scorefelt. Med en ZRANGEBYSCORE du kan få 'record' direkte. Denne teknik er sikker, så længe dine ID'er bruger 15 cifre eller mindre, og du ikke bruger decimaldelen af ​​'score'. Så ID'et skal forblive i området -999999999999999 til 9999999999999999. Bemærk:Disse grænser eksisterer, fordi Redis-serveren faktisk gemmer partituret (float) som en redis-streng-repræsentation internt.

Håber dette hjælper, TW




  1. hvordan man bruger udfylde og samle i samme erklæring?

  2. 3 måder at sortere dokumenter i MongoDB

  3. En oversigt over feltniveaukryptering på klientsiden i MongoDB

  4. MongoDB virker ikke. FEJL:dbpath (/data/db) eksisterer ikke.