Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2023-12-20 GMT+08:00

Explicação e uso de hashtags

Design de hashtag

Operações multi-chave, como aquelas que usam o comando MSET ou scripts Lua, são atômicas. Todas as chaves especificadas são executadas ao mesmo tempo. No entanto, em um cluster, cada chave é hash para uma determinada partição e as operações de várias chaves não são mais atômicas. As chaves podem ser alocadas para diferentes slots. Como resultado, algumas chaves são atualizadas, enquanto outras não. Se houver uma hashtag, o cluster determinará qual slot alocar uma chave com base na hashtag. Chaves com a mesma hashtag são alocadas para o mesmo slot.

Uso de hashtags

Somente o conteúdo entre a primeira chave à esquerda ({) e a primeira chave à direita (}) a seguir é submetido a hash.

Por exemplo:

  • Nas teclas {user1000}.following e {user1000}.followers, há apenas um par de chaves. user1000 será hash.
  • Na tecla foo{}{bar}, não há conteúdo entre a primeira { e a primeira }. Toda a tecla foo{}{bar} será hash como de costume.
  • Na tecla foo{{bar}}zap, {bar (o conteúdo entre a primeira { e a primeira }) é hash.
  • Na tecla foo{bar}{zap}, bar é hash porque está entre o primeiro par de { e }.

Exemplo de hashtag

Quando a seguinte operação é realizada:

EVAL "redis.call('set',KEYS[1],ARGV[1]) redis.call('set',KEYS[2],ARGV[2])" 2 key1 key2 value1 value2

O seguinte erro é exibido:

ERR 'key1' e 'key2' não estão no mesmo slot

Você pode usar uma hashtag para resolver esse problema:

EVAL "redis.call('set',KEYS[1],ARGV[1]) redis.call('set',KEYS[2],ARGV[2])" 2 {user}key1 {user}key2 value1 value2