Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Como armazenar o resultado de pesquisa de árvore de catálogo agregado no Redis


Se você quer velocidade, deve se preparar o máximo possível ao armazenar a estrutura ou 'cache' no redis.Se você armazenar os produtos em um HSET , e adicione os contadores de categoria (um por categoria) ao lado de seu membro 'dados do produto' neste HSET , você pode usar HINCRBY para incrementar/diminuir os contadores.

Em geral (projetando um cache Redis para suas necessidades):você deve tentar evitar a recuperação de dados desnecessários.

Eu recomendo usar um script Lua para armazenar (/atualizar/excluir) bem como recuperar seu relatório agregado. Os scripts Lua são executados no servidor Redis. O ServiceStack os suporta (SCRIPT LOAD + EVALSHA ou simplesmente EVAL ), e você também pode tentar o módulo cliente BookSleeve C# (que usamos e é um pouco mais rápido. 'mais rápido' :um bom design de redis-data vem primeiro, é claro). O cliente BookSleeve C# se concentra em redis pipelining multithread, que provavelmente é o que você deseja ao lidar com grandes conjuntos de dados. O pipeline também deve ser possível com o ServiceStack.

Se as categorias e produtos tiverem um ID inteiro, você também pode combiná-lo com um ZSET , onde você pode usar o ID como o campo de pontuação. Com um ZRANGEBYSCORE você pode obter diretamente o 'registro'. Esta técnica é segura desde que seus IDs estejam usando 15 dígitos ou menos, e não use a parte decimal da 'pontuação'. Portanto, o ID deve permanecer no intervalo -999999999999999 a 999999999999999. Observação:esses limites existem porque o servidor Redis realmente armazena a pontuação (float) como uma representação de cadeia de redis internamente.

Espero ter ajudado, tw