redis中key过期时触发事件
Redis本身不直接支持过期事件的触发,但是可以通过Redis的发布/订阅机制或者使用Redis的__keyevent@<db>__:expired
通道来监控key的过期。
以下是使用发布/订阅机制来监听key过期事件的例子:
- 客户端A订阅
__keyevent@<db>__:expired
通道。
import redis
r = redis.Redis()
pubsub = r.pubsub()
pubsub.subscribe('__keyevent@0__:expired')
for message in pubsub.listen():
if message['type'] == 'message':
print(f"Key expired: {message['data']}")
- 客户端B设置一个key,并让它过期。
import time
import redis
r = redis.Redis()
key_name = 'my_key'
# 设置一个key,并在10秒后过期
r.set(key_name, 'value')
r.expire(key_name, 10)
# 等待10秒,让key过期
time.sleep(10)
当key过期后,客户端A会收到一个消息,打印出key的名字。
请注意,这个例子中的<db>
需要替换为实际的数据库索引,例如0
。此外,确保Redis配置文件中的notify-keyspace-events
选项包含Ex
,以便订阅到过期事件。
评论已关闭