一、背景
在做一个支付订单的CASE,需要对订单进行限定时间内支付,到期未完成支付则该订单失效,商品退库处理。
二、方案
这种案例很适合使用redis的keyspace notification键空间通知功能
键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。
可以通过对redis的redis.conf文件中配置notify-keyspace-events参数可以指定服务器发送哪种类型的通知。下面对于一些参数的描述。默认情况下此功能是关闭的。
三、开启键空间通知的两种方式
- 修改配置文件
- 命令行修改
//命令行开启键值空间通知
config set notify-keyspace-events KEA
//接收所有订阅事件
psubscribe '__key*__:*'
//监听数据库为0的订阅过期事件
psubscribe __keyevent@0__:expired
四、监听订阅过期事件
- 命令行开启键值空间通知
-
监听数据库为0的订阅过期事件
-
设置key值为name值为lisi的数10秒钟过期
4.10秒钟过去之后,监听事件则接到通知