由于 keys 命令会影响 redis 性能,所以将 keys 命令改为 scan
原本的代码:
$redis = QRedis::getInstance('common');//获取redis连接实例 或者为 $redis = new Redis();
$array = $redis->keys('test:*');
//code
修改后变为
$redis = QRedis::getInstance('common');//获取redis连接实例 或者为 $redis = new Redis(); $redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY);
$it = null;
$match = 'test:*';
$count = 10000;
while ($array = $redis->scan($it, $match, $count) {
//code
}
结果报错:
Warning: Parameter 1 to Redis::scan() expected to be a reference, value given in
经过万能的谷歌指导,代码改为
$redis = QRedis::getInstance('common');
$redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY);
$it = null;
$match = 'g:static:clear:todo:*';
$count = 10000;
while ($array = call_user_func_array(array($redis, 'scan'), array(&$it, $match, $count))) {
//code
}
于是完美的解决问题。