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

Come archiviare i risultati di ricerca dell'albero del catalogo aggregato in Redis

Se vuoi velocità, dovresti prepararti il ​​più possibile quando memorizzi la struttura o 'cache' in redis.Se memorizzi i prodotti in un HSET e aggiungi i contatori di categoria (uno per categoria) insieme al membro "dati di prodotto" in questo HSET , puoi usare HINCRBY per incrementare/decrementare i contatori.

In generale (progettando una cache Redis per le tue esigenze):dovresti cercare di impedire il recupero di dati che non ti servono.

Raccomando di utilizzare uno script Lua per archiviare (/aggiornare/eliminare) e recuperare il rapporto aggregato. Gli script Lua vengono eseguiti sul server Redis. ServiceStack li supporta (SCRIPT LOAD + EVALSHA o semplicemente EVAL ), e potresti anche provare il modulo client BookSleeve C# (che usiamo ed è un po' più veloce. 'più veloce' :una buona progettazione dei dati redis viene prima, ovviamente). La pipeline dovrebbe essere possibile anche con ServiceStack.

Se le categorie e i prodotti hanno un ID intero, puoi anche combinarlo con un ZSET , dove puoi utilizzare l'ID come campo del punteggio. Con un ZRANGEBYSCORE puoi ottenere direttamente il "record". Questa tecnica è sicura purché i tuoi ID utilizzino 15 cifre o meno e non utilizzino la parte decimale del "punteggio". Quindi l'ID deve rimanere nell'intervallo da -999999999999999 a 9999999999999999. Nota:questi limiti esistono perché il server Redis memorizza effettivamente il punteggio (float) come rappresentazione di una stringa redis internamente.

Spero che questo aiuti, TW