zoukankan      html  css  js  c++  java
  • redis 过期回调通知

    redis 过期回调通知

    背景

    在使用redis的过程中,有时我们会遇到这种情景,当key过期的时候,我们需要去重新做一些操作,比如重新生成value等。之前,一直用的是添加一个celery定时任务,今天了解redis的通知功能后,发现可以用直接实现。

    简介

    官方原文:https://redis.io/topics/notifications
    简单来说,在2.8.0之后,redis提供了keyspace 通知的功能,可以实时监控redis中keys的变化情况(set, expire,expired,del...)结果会通过redis的消息订阅/发布机制。我们通过订阅指定的channel,就可以知道redis中哪些值过期。

    使用

    • 开启notify-keyspace-events。
      默认情况下,redis是关闭了此功能,我们可以在配置文件中开启。也可以通过命令redis-cli config set notify-keyspace-events KEA
      其中KEA代表的意义可以查看文档的说明,

    (如果我们只关心过期的事件,我们可以使用KEx)
    此时,当我们设置的key过期的时候,我们就可以通过订阅“__key[db]__:[key]” 来监听了

    • 订阅
      配置好后,我们运行redis的订阅指令redis-cli psubscribe '__key*__:*',然后我们设置一个值,并添加过期时间,就可以看到在过期后,就会收到消息了,(收到怎样的消息需要看前面的配置, 这里本人配置的是KEx,仅监听过期)。
      而订阅的处理方式可以用自己熟悉的语言去实现

    反思

    redis默认没开启可能是考虑到性能,毕竟会多一个监控,发布的步骤,具体性能怎么养,还是后面空了在测试下吧,本文只提供个思路。

  • 相关阅读:
    Git之GitFlow工作流
    auth
    rbac
    修改或删除windows上的git用户凭证信息
    Linux之shell备份数据库
    解决Navicat 连接服务器数据库报10060问题
    PHP框架学习思路
    shell之hello world
    Linux命令大全
    PHP 各个版本的区别
  • 原文地址:https://www.cnblogs.com/yuzhenjie/p/9966285.html
Copyright © 2011-2022 走看看