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;
    /*
     * 開啟訂閱
     * 命令行調(diào)用 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');
    }
    /*
     * 設(shè)置過期redis值 用 - 分隔,可以獲得設(shè)置的信息
     */
    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

/*
 * 訂閱過期回調(diào)方法
 */
if(!function_exists('keyCallback')) {

    function keyCallback($redis, $pattern, $chan, $msg){
        echo "Pattern: $pattern\n";
        echo "Channel: $chan\n";
        echo "Payload: $msg\n";
        //keyCallback為訂閱事件后的回調(diào)函數(shù),這里寫業(yè)務(wù)處理邏輯,
        $order = explode('-', $msg);
        echo "訂單號:" . $order[1] . "\n";
        echo "表名:" . $order[3] . "\n";
        echo "字段:" . $order[5] . "\n";
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容