项目团队中使用redis进行管理,key命名非常关键,区别商户、类型、用户等多维度文件夹管理这就比较舒服了
- 定义公共常量类
- 规范命名 。设置key时不能同时制定过期时间
- 删除key规则,有时候也需要用到
public function actionIndex($message = 'hello world')
{
$store_id = 6;
$user_id = 641;
// //
// \Yii::$app->redis->set(CacheKeyEnum::ACTIVITY_ORDER_VOUCHER_USER.':'.$store_id.':'.$user_id,1);
// \Yii::$app->redis->expire(CacheKeyEnum::ACTIVITY_ORDER_VOUCHER_USER.':'.$store_id.':'.$user_id,10);
// die;
/**
在redis集群中,scan命令需要指定节点。还需要注意,要连接主节点。
**/
$redis = new \Redis();
$timeout = 2.5;
$ip = '127.0.0.1';
$redisConfArr = [
[$ip, 6379],
[$ip, 6379],
[$ip, 6379]
];
foreach ($redisConfArr as $redisConf) {
$redis->pconnect($redisConf[0], $redisConf[1], $timeout);
//默认SCAN_NORETRY情况下有可能会返回空数组,设置成SCAN_RETRY,如果是空数组的话,将不返回继续扫描下去
$redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY);
$it = NULL;
while ($arr_keys = $redis->scan($it, 'a'.'*')) {
if (is_array($arr_keys)) {
//推荐使用unlink函数,非阻塞删除,删除大key时很好用,但是它需要redis版本>=4.0
$result = $redis->del($arr_keys);
echo $result . PHP_EOL;
}
}
echo "OK!" . PHP_EOL;
}
}
\Yii::$app->redis->set(CacheKeyEnum::ACTIVITY_ORDER_VOUCHER_USER.':'.$store_id.':'.$user_id,1);
\Yii::$app->redis->expire(CacheKeyEnum::ACTIVITY_ORDER_VOUCHER_USER.':'.$store_id.':'.$user_id,10);