下面用PHP代码演示SCAN命令的使用:connect('127.0.0.1', 6379);/* 设置遍历的特性为不重复查找,该情况下扩展只会scan一次,所以可能会返回空集合 */$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_NORETRY); $it = NULL;$pattern = '*';$count = 50;// 每次遍历50条,注意是遍历50条,遍历出来的50条key还要去匹配你的模式,所以并不等于就能够取出50条key do{$keysArr = $redis->scan($it, $pattern, $count);if ($keysArr){foreach ($keysArr as $key){echo $key . "n";}} } while ($it > 0);//每次调用 Scan会自动改变 $it 值,当$it = 0时 这次遍历结束 退出循环echo '---------------------------------------------------------------------------------' . "n";/* 设置扩展在一次scan没有查找出记录时 进行重复的scan 直到查询出结果或者遍历结束为止 */$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY); $it = NULL;$pattern = '*';$count = 50;// 每次遍历50条,注意是遍历50条,遍历出来的50条key还要去匹配你的模式,所以并不等于就能够取出50条key //这种用法下我们只需要简单判断返回结果是否为空即可, 如果为空说明遍历结束while ($keysArr = $redis->scan($it, $pattern, $count)){foreach ($keysArr as $key){echo $key . "n";}}执行结果:[root@localhost php]# /usr/local/php/bin/php scan.php bmbm2h1namebitbm1placescitieshhl---------------------------------------------------------------------------------bmbm2h1namebitbm1placescitieshhl注意:如果php执行报错 请升级到较新版本的Redis扩展。
更多redis知识请关注redis入门教程栏目。