博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis 处理订单过期自动取消
阅读量:6094 次
发布时间:2019-06-20

本文共 879 字,大约阅读时间需要 2 分钟。

      公司商城项目中的一个订单过期自动取消问题,之前没做过类似的项目,在网上查找相关的资料

1、redis 的键空间通知(keyspace notifications)

      redis 在2.8版本后发布的一个功能,目前应该大部分公司用的都在这个版本以上了吧,

  这个功能默认是没有开启的,开启是需要设置 config set notify-keyspace-events Ex

 可设置参数

K:keyspace事件,事件以__keyspace@<db>__为前缀进行发布;

E:keyevent事件,事件以__keyevent@<db>__为前缀进行发布;

g:一般性的,非特定类型的命令,比如del,expire,rename等;

$:字符串特定命令;

l:列表特定命令;

s:集合特定命令;

h:哈希特定命令;

z:有序集合特定命令;

x:过期事件,当某个键过期并删除时会产生该事件;

e:驱逐事件,当某个键因maxmemore策略而被删除时,产生该事件;

A:g$lshzxe的别名,因此”AKE”意味着所有事件。

因为需要的是过期通知类似定时任务,所以就设置Ex就可以了,

redis-cli进入redis 执行  

psubscribe __keyevent@0__:expired复制代码

订阅0号数据的所有过期通知

SETEX order_9299292 10 99988 复制代码

设置10秒过期过期,默认使用0号库

我是用PHP实现

明白上面的原理,实现很容易,PHP的reids的扩展的方法跟redis的命令基本差不多,

psubscribe(['__keyevent@1__:expired'],'psCallback');复制代码

主要是用这个方法,后面的psCallback 是过期后的回调方法,逻辑都里面处理。

网上都有很多相关的教程,做了一遍就在此记录一遍,有错误的,各位老哥多多指教。

2、定时任务

主要是看了下面的文章

详细

这种方式我没有去实现,感觉是第一种简单方便,而且效率挺好,

不太懂两种方式的优缺点,有懂的老哥指点一波,不胜感激

转载地址:http://mnqwa.baihongyu.com/

你可能感兴趣的文章
linux下查看各硬件型号
查看>>
epoll的lt和et模式的实验
查看>>
Flux OOM实例
查看>>
07-k8s-dns
查看>>
Android 中 ListView 分页加载数据
查看>>
oracle启动报错:ORA-00845: MEMORY_TARGET not supported on this system
查看>>
Go方法
查看>>
Dapper丶DapperExtention,以及AbpDapper之间的关系,
查看>>
搞IT的同学们,你们在哪个等级__那些年发过的帖子
查看>>
且谈语音搜索
查看>>
MySQL数据库导入导出常用命令
查看>>
低版本Samba无法挂载
查看>>
Telegraf+Influxdb+Grafana构建监控平台
查看>>
使用excel 展现数据库内容
查看>>
C#方法拓展
查看>>
MySql.Data.dll的版本
查看>>
Linux系统磁盘管理
查看>>
hdu 2191 (多重背包+二进制优化)
查看>>
home.php
查看>>
neo4j---删除关系和节点
查看>>