【发布时间】:2016-08-11 09:27:56
【问题描述】:
我正在使用 phpredis 将 KEYS 替换为 SCAN。
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
$it = NULL;
while($arr_keys = $redis->scan($it, "mykey:*", 10000)) {
foreach($arr_keys as $str_key) {
echo "Here is a key: $str_key\n";
}
}
根据redis documentation,我使用SCAN对搜索进行分页以避免使用KEYS的缺点。
但在实践中,使用上述代码的成本比仅使用单个 $redis->keys() 低 3 倍
所以我想知道是我做错了什么,还是我必须付出速度才能避免 KEYS 的威胁?
请注意,我的数据库中总共有 400K+ 键,以及 4 个 mykey:* 键
【问题讨论】: