Sobre o redis, todo mundo costuma usar, e o cenário mais usado é o cache de dados.
revisar
A partir do redis 2.6.0, o redis possui um interpretador Lua embutido e fornece um comando de avaliação para analisar a avaliação do script Lua.
Sintaxe: eval script numkeys args
Parâmetros:
Eval — Redis fornece comandos para analisar o script Lua
Script — script Lua
numkeys — Especifica o número de chaves no conjunto de parâmetros de nome de chave
keys — O conjunto de parâmetros de nome chave, representado pela variável global matriz KEYS, começando com um subscrito de 1
args — Um conjunto de parâmetros-chave-valor, representados por um array de variáveis globais ARGV, começando com um subscrito de 1
Vantagens de usar Lua em Redis
Reduza a sobrecarga da rede. Múltiplas requisições podem ser enviadas ao mesmo tempo na forma de scripts para reduzir a latência da rede Manipulação atômica. O Redis executará todo o script como um todo, sem outros comandos inseridos entre eles. Portanto, não há necessidade de se preocupar com condições de corrida e transações durante o processo de roteiro. Reintegrado. Os passos enviados pelo cliente são armazenados persistentemente em redis para que outros clientes possam reutilizar o script sem precisar usar código para completar a mesma lógica.
Atomicidade do alfabeto
Scripts Lua não podem ter operações demoradas ou loops mortos, caso contrário o Redis não aceitará outros comandos e não executará para interromper a execução do script
O Redis usa um único interpretador Lua para executar todos os scripts e garante que os scripts sejam executados de forma atômica.Isso significa que, quando um script está rodando, nenhum outro script ou comando Redis será executado! Portanto, se o script atual estiver rodando lentamente, o servidor pode não conseguir executar o comando porque está ocupado, como por exemplo:
Cada script tem um limite máximo de tempo de execução, o valor padrão é 5s. O tempo máximo de execução é controlado pela opção de limite de tempo lua do arquivo de configuração redis.conf, ou diretamente usando os comandos config get e config set. Quando a execução de um script atinge seu tempo máximo de execução, a Redis não o termina ativamente, ela executa os seguintes passos:
(1) Redis registra que um script está ficando sem tempo
(2) O Redis começa a reaceitar solicitações de outros clientes, mas aceita apenas a execução de comandos de eliminação de script e o desligamento do nosave.
(3) Se o script apenas executar operações de leitura, use o comando de eliminação do script para parar o script imediatamente; Se o script executar uma operação de escrita, apenas o comando shutdown save/nosave é permitido para parar o servidor para impedir que os dados atuais sejam gravados no disco. (Neste ponto, o servidor está fora do ar e os dados não serão salvos)
exemplo
Execute o script, os parâmetros são 2 key e value, e o comando é o seguinte:
Scripts deadloop, executar o script a seguir, fará com que o Redis não consiga processar outros comandos e fique travado:
Tente usar um script para adicionar dados de tipo string com o seguinte comando:
Execute alguns scripts mais complexos, se o valor da chave for igual ao valor que passamos, então exclua o cache; caso contrário, faça qualquer coisa, o comando é o seguinte:
Os resultados da implementação são os seguintes:
(Fim)
|