由于 keys 命令會影響 redis 性能怎棱,所以將 keys 命令改為 scan
原本的代碼:
$redis = QRedis::getInstance('common');//獲取redis連接實例 或者為 $redis = new Redis();
$array = $redis->keys('test:*');
//code
修改后變?yōu)?/p>
$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
}
結(jié)果報錯:
Warning: Parameter 1 to Redis::scan() expected to be a reference, value given in
經(jīng)過萬能的谷歌指導(dǎo)锨苏,代碼改為
$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
}
于是完美的解決問題搏嗡。