目錄:/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";
}
}