一、使用发布订阅测试

1.在 redis.conf 设置
notify-keyspace-events Ex # x代表过期

2.重启redis
[root@localhost redis-5.0.5]# ls 00-RELEASENOTES CONTRIBUTING deps Makefile
README.md runtest runtest-moduleapi sentinel.conf tests BUGS COPYING INSTALL
MANIFESTO redis.conf runtest-cluster runtest-sentinel src utils [root@localhost
redis-5.0.5]# pwd /root/redis-5.0.5 [root@localhost redis-5.0.5]# ps -ef|grep
6379 root 1652 1 0 22:43 ? 00:00:02 /root/redis-5.0.5/src/redis-server
0.0.0.0:6379 root 3732 3520 0 23:22 pts/3 00:00:00 grep --color=auto 6379
[root@localhost redis-5.0.5]# /root/redis-5.0.5/src/redis-server
/root/redis-5.0.5/redis.conf
二.使用redis-cli的客户端测试

1.开启 redis-cli 等待过期key的通知(订阅)
[root@localhost redis]# /root/redis-5.0.5/src/redis-cli 127.0.0.1:6379>
PSUBSCRIBE __keyevent@0__:expired Reading messages... (press Ctrl-C to quit) 1)
"psubscribe" 2) "__keyevent@0__:expired" 3) (integer) 1
说明:
PSUBSCRIBE __keyevent@0__:expired # PSUBSCRIBE 命令订阅一个或多个符合给定模式的频道,0代表数据库0
2.开启另外一个redis-cli客户端
127.0.0.1:6379> setex test 10 123 OK
3.10秒过期后在 订阅中能看到过期的 key 信息

三.Php 代码测试实现

1.创建文件(订阅) vim listen.php
<?php //这一句是说长连接不超时,如果没有的话,这个文件会在运行一段时间后自动停止,一定不能少
ini_set('default_socket_timeout', -1); $redis = new Redis();
$redis->connect("127.0.0.1", 6379);
$redis->psubscribe(array('__keyevent@0__:expired'), 'keyCallback'); function
keyCallback($redis, $pattern, $channel, $message) { echo "Pattern :
$pattern\n"; echo "Channel : $channel\n"; echo "Message : $message\n";
file_put_contents('test.log',$message."\r\n",FILE_APPEND); }
2.创建文件 vim setex.php
<?php $redis = new Redis(); $redis->connect("127.0.0.1", 6379);
$redis->setex("test", 10, 123);
3.使用php命令式执行
#启动订阅 [root@localhost redis]# php listen.php #启动redis写入数据 [root@localhost
redis]# php setex.php
执行结果:

技术
©2019-2020 Toolsou All rights reserved,
vue项目中使用本地静态JS数据文件利用克鲁斯卡尔算法求最小生成树C++ 移动构造函数和拷贝构造函数华为鸿蒙 HarmonyOS 2 正式发布VS添加动态链接库的两种方法python_樱花树Jmeter配置元件之HTTP授权管理器与 HTTP缓存管理器-19vue+element-ui里面table组件多选框实现批量操作RISC-V指令集架构特点及其总结js实现上下文菜单