Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 29611|Resposta: 2

[Redis] O Redis usa scripts Lua para explicações detalhadas

[Copiar link]
Publicado em 30/04/2021 15:42:57 | | | |
Sobre o redis, todo mundo costuma usar, e o cenário mais usado é o cache de dados.

revisar

Diferença de persistência Redis entre RDB e AOF
https://www.itsvse.com/thread-9555-1-1.html

A instalação do Docker roda o cache Redis
https://www.itsvse.com/thread-8995-1-1.html

Exemplos explicam o que são penetração de cache, avalanche de cache e quebra de cache Reddis
https://www.itsvse.com/thread-8968-1-1.html

Curingas da Redis para deletar chaves em massa
https://www.itsvse.com/thread-7957-1-1.html

Instalação do CentOS 7 Tutorial Redis 5.0.3
https://www.itsvse.com/thread-7201-1-1.html

Instale a extensão Redis sob php 5.5.7 no CentOS
https://www.itsvse.com/thread-7200-1-1.html

Quantas chaves podem ser armazenadas em uma instância Redis, e quais são as chaves e valores máximos?
https://www.itsvse.com/thread-6848-1-1.html

A questão dos redis chineses não pode ser exibida corretamente
https://www.itsvse.com/thread-5032-1-1.html

O Redis permite acesso remoto
https://www.itsvse.com/thread-5011-1-1.html

O Windows falha em iniciar o serviço Redis, erro 1067: Processo termina inesperadamente.
https://www.itsvse.com/thread-5010-1-1.html

CentOS instalou o Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

O Redis configura senhas de conexão remota e acesso
https://www.itsvse.com/thread-4101-1-1.html

O Redis esvazia o cache de dados
https://www.itsvse.com/thread-4027-1-1.html

Configuração de persistência do Redis e persistência desligada
https://www.itsvse.com/thread-4012-1-1.html

A diferença entre save e bgsave no redis
https://www.itsvse.com/thread-4010-1-1.html

Redis dois métodos e princípios de persistência
https://www.itsvse.com/thread-4009-1-1.html

Redis tem três formas de começar
https://www.itsvse.com/thread-4008-1-1.html

Método Redis para ocultar janelas de linha de comando
https://www.itsvse.com/thread-2988-1-1.html

Redis Problema do Hash do Hash do Valor do Hash
https://www.itsvse.com/thread-2587-1-1.html

5 Coisas Que Você Deve Saber Antes de Usar Redis
https://www.itsvse.com/thread-2580-1-1.html

O Redis modifica o número de porta padrão e define a senha de acesso
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bit download, endereço oficial de download
https://www.itsvse.com/thread-2576-1-1.html
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)




Anterior:.NET/C# Lock Principle Monitor fornece uma explicação detalhada
Próximo:Solução de solicitação PUT 405 de IIS DELETE
 Senhorio| Publicado em 10/05/2021 09:18:34 |

O login do hiperlink está visível.
O comando Redis Script Load é usado para adicionar script scripts ao cache de scripts, mas não é executado imediatamente.

O comando EVAL também adiciona o script ao cache do script, mas avalia o script de entrada imediatamente.

Se o script já estiver no cache, nenhuma ação é tomada.

Após a adição do script ao cache, ele pode ser chamado usando a soma de verificação SHA1 do script via o comando EVALSHA. (Isso também significa.)O mesmo script executa o mesmo valor sha1 em qualquer servidor Redis diferente

Scripts podem permanecer no cache por um tempo infinito até que o SCRIPT FLUSH seja executado.



 Senhorio| Publicado em 12/05/2021 11:38:55 |
Determine se o script lua está no cache


Após o reinício do Dikus, o script Lua é automaticamente apagado, não será permanente

Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com