🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
先开启监听后,就可以添加过期任务了 一:配置redis ~~~ notify-keyspace-events "Ex" ~~~ 宝塔的直接在redis里面配置即可(记住要双引号,配置后重启) 二:添加一个监听任务(监听过期的方法)和添加任务(设置redis缓存) 添加任务start------------------------------------------------------------- ``` $redis = new \Redis(); //连接本地的 Redis 服务 $redis->connect("127.0.0.1", 6379); //这个key是最主要的交互数据,里面随便传自己需要的参数 $key = base64_encode(json_encode(['order'=>'Dc2021042314551110210010180531','type'=>'1','time'=>time()])); $redis->set($key, "123456789",300);设置为300秒后过期 (自己修改) ``` 添加任务end----------------------------------------------------------------------------- 监听任务start--------------------------------------------------------------- 项目根目录创建文件 redis_task.php (文件名随意) 执行监听 (php redis_task.php) ``` <?php //redis时间到期销毁执行 function run_task($redis, $pattern, $chan, $key) { // // echo "Pattern: $pattern\n"; // echo "Channel: $chan\n"; // echo "Msg: $key\n"; $data = json_decode(base64_decode($key),true); $domain = 'http://tool.he4966.cn'; if($data){ switch ($data['type']) { case '1': //写需要执行的接口 自行修改 echo file_get_contents($domain.'/api/order/query_baochang_pay_order?order='.$data['order']); break; case '2': # code... break; default: # code... break; } } var_dump($data); } $redis = new \Redis(); //连接本地的 Redis 服务 可以更改自己的 $redis->connect("127.0.0.1", 6379); $redis->setOption(\Redis::OPT_READ_TIMEOUT,-1); echo "订阅任务消息监听..".PHP_EOL; $redis->psubscribe(array('__keyevent@0__:expired'), 'run_task'); ``` 监听任务end--------------------------------------------------