TP6 - Redis过期key订阅

目录:/app/admin/controller
Subscribe.php

namespace app\admin\controller;
use think\facade\Cache;

class Subscribe extends BaseController{
    protected $ip = '127.0.0.1';
    protected $port = 6379;
    /*
     * 开启订阅
     * 命令行调用 php index.php admin/subscribe/psubscribe
     */
    public function psubscribe(){
        $redis = new \Redis();
        $redis->connect($this->ip, $this->port);
        //解决Redis客户端订阅时候超时情况
        $redis->setOption(\Redis::OPT_READ_TIMEOUT, -1);
        $redis->psubscribe(array('__keyevent@0__:expired'), 'keyCallback');
    }
    /*
     * 设置过期redis值 用 - 分隔,可以获得设置的信息
     */
    public function setRedis(){
        $order = 'orderId-1001011-db-admin-filed-ad_id';
        $redis = Cache::handler();
        if($redis->get($order)){
            dump($redis->get($order));
        }else{
            dump($redis->setex($order, 5, 1));
        }
    }
}

目录:/app
common.php

/*
 * 订阅过期回调方法
 */
if(!function_exists('keyCallback')) {

    function keyCallback($redis, $pattern, $chan, $msg){
        echo "Pattern: $pattern\n";
        echo "Channel: $chan\n";
        echo "Payload: $msg\n";
        //keyCallback为订阅事件后的回调函数,这里写业务处理逻辑,
        $order = explode('-', $msg);
        echo "订单号:" . $order[1] . "\n";
        echo "表名:" . $order[3] . "\n";
        echo "字段:" . $order[5] . "\n";
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容