Redis key过期事件的监听
2021/9/24 19:12:21
本文主要是介绍Redis key过期事件的监听,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
使用redis key 过期通知,需开启key过期通知功能:
登录进入redis-cli
客户端,执行:
config set notify-keyspace-events Ex
或者在redis.conf 添加配置:
notify-keyspace-events "Ex" //过期时间监听生效
或者通过代码设置:
# 连接redis库1 redisCli1 = StrictRedis(db=1, decode_responses=True) # 开启key过期通知功能 redisCli1.config_set("notify-keyspace-events", "Ex") # 清空库 redisCli1.flushdb()
配置详解:
字符 | 发送通知 |
---|---|
K | 键空间通知,所有通知以 keyspace@ 为前缀,针对Key |
E | 键事件通知,所有通知以 keyevent@ 为前缀,针对event |
g | DEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知 |
$ | 字符串命令的通知 |
l | 列表命令的通知 |
s | 集合命令的通知 |
h | 哈希命令的通知 |
z | 有序集合命令的通知 |
x | 过期事件:每当有过期键被删除时发送 |
e | 驱逐(evict)事件:每当有键因为 maxmemory 政策而被删除时发送 |
A | 参数 g$lshzxe 的别名,相当于是All |
启动监听key过期
登录进入redis-cli 客户端,执行:( 订阅一个或者多个符合pattern格式的频道)
# 进入1库 redis-cli -n 1--raw # 订阅过期事件,*代表所有库 PSUBSCRIBE __keyevent@*__:expired
然后该客户端处于监听状态,如果有key过期,则列出:
Python代码示例
from redis import StrictRedis import requests import sys import logging import logging.handlers logger = logging.getLogger('mylogger') logger.setLevel(logging.WARNING) # handler 输出到控制台 ch = logging.StreamHandler() ch.setLevel(logging.WARNING) logger.addHandler(ch) # redis try: # 开启key过期通知功能 redisCli1 = StrictRedis(db=1, decode_responses=True) redisCli1.config_set("notify-keyspace-events", "Ex") redisCli1.flushdb() except: logging.error("redis服务未启动!") sys.exit(0) # 对库1 进行监听 pubsub = redisCli1.pubsub() # 发布监听key失效的订阅 pubsub.psubscribe("__keyevent@1__:expired") # 通过无限循环等待事件 logger.info('Starting message loop') for data in pubsub.listen(): key = data.get("data") if key != 1: logger.warning("过期key是: %s", key)
这篇关于Redis key过期事件的监听的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程
- 2024-12-07Redis入门:新手必读的简单教程
- 2024-12-06Redis入门教程:从安装到基本操作
- 2024-12-06Redis缓存入门教程:轻松掌握缓存技巧