一、背景
在做一个支付订单的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秒钟过去之后,监听事件则接到通知
网络异常,图片无法展示
|