利用redis 的key的过期时间的监听,来实现订单过期自动取消,并修改数据库的随笔
"""前几天想要实现一下自己在订单操作上的优化,想要添加一个订单支付时间限制,
想要用redis的key过期时间去做,就取网上查了一下,复制了大神们的代码,添加了一些小的细节,
给自己留个笔记"""
import redis
# 修改/etc/redis/redis.conf --->
# 816行 打开注释notify-keyspace-events Ex,并将下面的notify-keyspace-events "" 注释
def key():
print('成功')
r = redis.Redis(host='127.0.0.1', port=6379, db=0)
r.setex('name', 'wang', 5)
sub_expire = r.pubsub()
# 事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发,
# 故需要订阅 __keyevent@0__:expired,其中0表示dbindex
sub_expire.subscribe('__keyevent@0__:expired')
while True:
ex_pire = sub_expire.parse_response()
print(ex_pire[0], ex_pire[1], ex_pire[2])
if ex_pire[2] == 1:
pass
else:
keys = ex_pire[2].decode()
if keys == 'name':
key()