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:
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!!