Redis Watch Command

Redis Watch Command
Se você é sério sobre Redis, você deve usar transações para gerenciar seus dados. As transações Redis não são muito diferentes das transações em um banco de dados relacional.

Uma transação de banco de dados refere -se a uma única unidade de trabalho composta de perguntas únicas para múltiplas. Nos casos, uma operação só pode ser classificada como uma transação se houver alguma alteração no banco de dados.

Não nos preocuparemos com isso, mas aprenderemos a usar o comando Watch ao lado de transações Redis para este.

O que são transações?

Em Redis, as transações são compostas por quatro comandos principais: assista, executão, descarte e multi.

Usando os comandos acima, você pode abrir um bloco e adicionar vários comandos de uma só vez. Depois de concluído, você executa os comandos como uma única unidade.

Para que uma transação seja bem -sucedida, Redis garante que:

  1. Todos os comandos especificados em uma unidade de transação são executados consecutivamente. Portanto, a primeira rodada, a primeira corrida.
  2. Todos os comandos em uma unidade de transação devem executar com sucesso. Se um dos comandos na unidade falhar, todo o bloco de transação também falhar. Este recurso é conhecido como execução do comando atômico
  3. Terceiro, os comandos em uma transação são serializados. Portanto, um cliente não pode ser um servidor enquanto uma unidade de transação é executada.

Redis Crie transação

Você cria uma unidade de transação usando o comando multi. O comando multi retornará ok. Você pode ir em frente e adicionar todos os comandos de transação um após o outro.

Em vez de executar os comandos, Redis os fará na inserção até que você os chame.

Um exemplo é como mostrado abaixo:

127.0.0.1: 6379> multi
OK

Redis Execute Transaction Unit

Como mencionado, Redis fará fila os comandos em uma unidade de transação até você executá -los manualmente.

Podemos fazer isso usando o comando EXEC. Isso diz a Redis para executar todos os comandos na fila na ordem de inserção.

Um exemplo de uso é como mostrado abaixo:

127.0.0.1: 6379> Set NewKey "100"
ENFILEIRADAS
127.0.0.1: 6379> incur Newkey
ENFILEIRADAS
127.0.0.1: 6379> Obtenha Newkey
ENFILEIRADAS
127.0.0.1: 6379>

Você notará que cada comando executado está na fila. Um comando na fila é um comando que está programado para ser executado depois que o executivo é chamado.

Para executá -lo, ligue para o Exec como:

127.0.0.1: 6379> Exec
1) OK
2) (número inteiro) 101
3) "101"

Isso deve executar todos os comandos e retornar os valores resultantes.

Redis Remova a fila de comando

Suponha que você queira limpar sua fila de comando e liberar todos os comandos agendados? Para isso, você pode usar o comando de descarte como mostrado:

127.0.0.1: 6379> multi
OK
127.0.0.1: 6379> Set NewKey "100"
ENFILEIRADAS
127.0.0.1: 6379> incur Newkey
ENFILEIRADAS
127.0.0.1: 6379> Obtenha Newkey
ENFILEIRADAS
127.0.0.1: 6379> descarte
OK

Depois de executar o comando Dispard, Redis retornará ok e fechará a unidade de transação.

Redis Watch Command

O comando Watch em Redis permite que você implemente o recurso de check-and-set. Os comandos do relógio aceitam as teclas Redis como parâmetros e os monitoram.

Se alguma das chaves especificadas for alterada antes que o comando EXEC seja chamado, Redis encerra automaticamente a transação e retorna uma resposta nula.

Veja o exemplo abaixo:

var = pegue mykey
var = var + 1
Definir mykey $ var

No exemplo acima, temos uma operação que aumenta o valor de uma chave em 1. Obviamente, este não é um problema se apenas um único cliente executar a referida operação.

No entanto, se vários clientes tentarem executar a operação acima simultaneamente, uma condição de corrida ocorre e retornará um valor inválido.

Podemos resolver isso assistindo a chave como mostrado:

Assista Mykey
var = pegue mykey
var = var + 1
Multi
Definir mykey $ var
Exec

Aqui, se um cliente operar e o valor da chave for alterado antes de executar a transação, a execução falha.

Para remover todas as teclas assistidas, use o comando não.

Conclusão

Este artigo discutiu o uso e o trabalho com transações em um banco de dados Redis. Verifique a documentação para descobrir mais.

Obrigado pela leitura!!