美文网首页
Redis 使用 scan 命令代替 keys

Redis 使用 scan 命令代替 keys

作者: 躁动的石头 | 来源:发表于2017-02-24 15:56 被阅读1602次

由于 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 
}

于是完美的解决问题。

相关文章

网友评论

      本文标题:Redis 使用 scan 命令代替 keys

      本文链接:https://www.haomeiwen.com/subject/kfywwttx.html