Dados essenciaisDesempenho

Cache

Mantenha os seus dados mais acessados na memória e responda leituras bem abaixo de um milissegundo, em um motor que coloca cada núcleo para trabalhar.

GET/s com pipelining, medido
36.6M
precisão do TTL
ns
clientes existentes funcionam
RESP2/3
Etapa 1 de 5
Leia pelo cache

Um acerto volta direto da memória. O banco de dados não é acessado.

Sessão de exemploplaying
# Leia pelo cache
hotkv> GET product:1001
"{\"name\":\"Desk lamp\",\"price\":39}"

Uma demonstração animada com comandos reais do HotKV e respostas de exemplo. Clique em qualquer etapa para ir direto a ela. Os comandos e as respostas ficam em inglês, exatamente como você os digita e vê no HotKV.

O problema

Bancos de dados são lentos e caros de consultar para dados lidos milhares de vezes por segundo. Cada visualização de página, chamada de API ou atualização de dashboard repete a mesma consulta, e o banco de dados vira o gargalo muito antes da sua aplicação.

Como o HotKV resolve

O HotKV fica na frente do banco de dados e guarda os resultados na memória. A sua aplicação lê primeiro do HotKV e só recorre ao banco de dados em um miss. Como o HotKV executa comandos em muitas threads ao mesmo tempo, um cache movimentado não afunila todos os clientes em um único núcleo, e as tags permitem invalidar um grupo inteiro de entradas quando os dados de origem mudam.

Passo a passo

O que acontece, comando por comando

  1. 01

    Leia pelo cache

    Um acerto volta direto da memória. O banco de dados não é acessado.

    GET product:1001
  2. 02

    Miss, então carregue uma vez e coloque em cache

    Em um miss, a aplicação lê o banco de dados uma vez e coloca o resultado em cache por cinco minutos.

    SET product:2002 "{\"name\":\"Oak desk\",\"price\":420}" EX 300
  3. 03

    Marque as entradas pelas suas dependências

    Cada página em cache que mostra produtos de iluminação recebe a mesma tag.

    TAG.SET product:1001 catalog:lighting
  4. 04

    Invalide o grupo

    Os preços mudaram. Liste todas as chaves com a tag e apague-as em um pipeline.

    TAG.MEMBERS catalog:lighting
  5. 05

    Entradas de vida muito curta

    Um token relâmpago, já definido, que precisa sumir depois de 250 ms, com precisão de nanossegundos.

    NEXPIRE flash:token:9 250000000
Onde se encaixa

Cenários reais

Lojas online

Páginas de produtos, preços e níveis de estoque são lidos milhares de vezes por segundo e renovados por tag quando o catálogo muda.

APIs e backends mobile

As respostas dos endpoints populares ficam em cache com TTLs curtos, então os picos de tráfego atingem a memória em vez do banco de dados.

Sites de conteúdo

Fragmentos renderizados e metadados de artigos ficam em cache por minutos e são invalidados por tag quando um editor publica.

Integrado

O que você ganha

TTLs de segundos a nanossegundos

EXPIRE e PEXPIRE funcionam como você espera. NEXPIRE acrescenta precisão de nanossegundos.

EXPIREPEXPIRENEXPIRE

Invalidação por tag

Rotule as chaves com TAG.SET e depois encontre todas as chaves com um rótulo.

TAG.SETTAG.MEMBERS

Compressão opcional

Payloads grandes podem ser comprimidos para que uma parte maior do seu conjunto de trabalho caiba na memória.

Leituras multithread

Os comandos são executados em threads paralelas, então a vazão cresce com os núcleos. Os números estão na página Desempenho.

GETMGET

Perguntas frequentes

Posso usar o meu cliente Redis atual?

O HotKV fala o protocolo Redis (RESP2 e RESP3), então os clientes Redis padrão se conectam a ele. Confira a referência de comandos para os comandos de que você depende.

Como invalido um grupo de chaves em cache?

Marque as chaves com TAG.SET ao colocá-las em cache, depois chame TAG.MEMBERS e apague o que voltar.

De onde vem o número 36.6M?

É a vazão de GET com pipelining do benchmark publicado do HotKV. O método e o hardware estão na página Desempenho.

Casos de uso relacionados

Experimente com a sua própria carga de trabalho

O HotKV fala o protocolo Redis, então você pode apontar um cliente existente para ele e executar estes mesmos comandos.