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

Vista: 34045|Resposta: 6

[Fonte] O .NET usa cache Redis para notificações de expiração

[Copiar link]
Postado em 2020-8-22 10:34:59 | | | |
Ao realizar certas operações cronometradas, precisamos de feedback sobre os resultados. Por exemplo, pedidos são automaticamente excluídos após o vencimento, pedidos são automaticamente elogiados após alguns dias, pedidos não pagos são fechados após 15 minutos, etc., o que pode ser concluído usando alguns frameworks de tarefas temporizadas ou métodos de polling. Este artigo utiliza o mecanismo avançado de notificação de eventos de expiração do cache do Redis combinado com código .NET/C# para cumprir requisitos de negócio.

Introdução

Cenários de uso: 1. No negócio de pagamentos, ordens não pagas são encerradas automaticamente 2. Lembretes de expiração do cache

Em geral, podemos usar o serviço de temporização para processar o fechamento automático de ordens não pagas, como chamar a interface a cada minuto para processar pedidos não pagos e expirados, mas nesse caso, isso consumirá desempenho do computador, mesmo que não haja pedido, será processado a cada minuto, e o atraso máximo do tempo de processamento do pedido será de 59s, e o serviço de cronometragem deve estar sempre disponível

Então, o que queremos fazer? Só quando houver pedidos não pagos e expirados com processamento de baixa latência, podemos usar o mecanismo de expiração do cache do Rendis para empurrar a assinatura.

Assinatura Redis

Modificar o notify-keyspace-events Ex no arquivo de configuração redis.conf

Para economizar recursos da coça, as notificações de eventos não são ativadas por padrão, e o padrão é notify-keyspace-events

# Notificação de espaço de teclas K, <db>prefixado com __keyspace@__
# Notificação de evento da chave E, <db>prefixada com __keysevent@__
# g del, expipre, renomear e outros tipos de comandos genéricos, ...
# $string comando
# Comando l List
#s Comando Set
# h Comando Hash
# Comando Z Ordem Set
# x Evento de expiração (gerado toda vez que uma chave expira)
# Evento de despejo E (gerado quando a chave é limpa quando a memória está cheia)
# Um pseudônimo g$lshzxe, então "AKE" significa todos os eventos


Notify-keyspace-events "KX" indica que você quer monitorar eventos de invalidação para uma chave. Definir o parâmetro para a string AKE significa enviar todos os tipos de notificações.

Instalei o Redis como um serviço na minha máquina, modifiquei o arquivo de configuração redis.windows.conf e precisei reiniciar a configuração do serviço do Redis para entrar em vigor.

Exemplo de código .NET/C#

O pacote é o seguinte:



invocar



Vamos tentar escrever um cache com redis-cli.





Na verdade, você também pode assinar notificações de expiração do cache executando o seguinte comando via redis-cli:




Quando N clientes assinam notificações de eventos de expiração em cache, o Redis notificará N usuários sobre a mesma mensagem de expiração, não apenas um dos clientes, como mostrado na figura abaixo:



Código fonte C# para download:

https://down.itsvse.com/item/17856.html

resumo

O pub/sub do Redis é um mecanismo de mensagens pouco confiável, não armazena informações, só encaminha online, e definitivamente não existe um mecanismo de confirmação de ACK, e apenas o segmento de assinaturas será encaminhado, então o Keyspace Notifications também é um sistema de notificações pouco confiável; se nosso negócio precisa de boa confiabilidade, essa não é a melhor escolha. De modo geral, recomendamos o DLX (Dead-Letter-Exchange) do RabbitMQ para implementá-lo, que é a função de fila atrasada. É só que a solução do Redis é mais fácil de implementar e menos cara de operar. Ainda assim, é muito conveniente para empresas que não exigem alta confiabilidade.




Anterior:.NET Core 3.1 Instalação Prompt Inteligente Chinês
Próximo:O .NET não recebe o conjunto completo de montagem de referência
Postado em 29-08-2020 14:33:18 |
Aprenda a aprender
Postado em 30-11-2021 13:16:47 |
Aprenda
Postado em 30-11-2021 13:21:02 |
O pub/sub do Redis é um mecanismo de mensagens pouco confiável, não armazena informações, só encaminha online, e definitivamente não existe um mecanismo de confirmação de ACK, e apenas o segmento de assinaturas será encaminhado, então o Keyspace Notifications também é um sistema de notificações pouco confiável; se nosso negócio precisa de boa confiabilidade, essa não é a melhor escolha. De modo geral, recomendamos o DLX (Dead-Letter-Exchange) do RabbitMQ para implementá-lo, que é a função de fila atrasada. É só que a solução do Redis é mais fácil de implementar e menos cara de operar. Ainda assim, é muito conveniente para empresas que não exigem alta confiabilidade.
Postado em 14-02-2022 17:42:43 |
Olha, aprenda
Postado em 2022-3-2 às 15:25:00 |
Aprenda
Postado em 27-07-2022 16:40:13 |
Aprenda a aprender
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