predis監聽不到key過期事件,redis-cli可以收到
redis 4.0.11
laravel 5.8
redis.conf 已改
想做一個會員到期自動關閉,或者續費自動更新過期時間,想到redis的釋出訂閱key過期事件,在Command程式碼裡面redis設定一個過期的key redis-cli可以收到過期通知,在redis-cli設定一個過期的key,redis-cli也是可以正常收到,唯獨Command裡面收不到?這是啥坑?
public function handle()
{
$cache_db = config('database.redis.default.database',0);
$pattern = '__keyevent@'.$cache_db.'__:expired';
Redis::setex('Company_Member:10215858212874015', 5, '10215858212874015');
echo Redis::get('Company_Member:10215858212874015');
Redis::subscribe([$pattern], function ($channel) {
echo 'message:';
});
}
當我不監聽key過期,用redis設定一個測試的頻道testchannel
在我的業務程式碼中把
Redis::setex('Company_Member:'.$info->id, 5, $info->id);
換成
Redis::publish('testchannel', 'hello world');
然後命令列修改程式碼
public function handle()
{
$cache_db = config('database.redis.default.database',0);
//$pattern = '__keyevent@'.$cache_db.'__:expired';
$pattern = 'testchannel';
// Redis::setex('Company_Member:10215858212874015', 5, '10215858212874015');
// echo Redis::get('Company_Member:10215858212874015');
Redis::psubscribe([$pattern], function ($message, $channel) {
echo 'message:'. $message;
});
}
神奇的事情發生了
我現在有挺多問號的。。。
本作品採用《CC 協議》,轉載必須註明作者和本文連結