当Redis外观直接将命令传递给Predis(或您可能会说Redis本身)时,这与Redis文档(http://redis.io/commands/scan)紧密相关。您可以使用游标(第一个数组条目)进行后续调用以迭代直到游标为零。
我整理了一种递归方法,以扫描所有条目:
function scanAllForMatch ($pattern, $cursor=null, $allResults=array()) { // Zero means full iteration if ($cursor==="0") { return $allResults; } // No $cursor means init if ($cursor===null) { $cursor = "0"; } // The call $result = Redis::scan($cursor, 'match', $pattern); // Append results to array $allResults = array_merge($allResults, $result[1]); // Recursive call until cursor is 0 return scanAllForMatch($pattern, $result[0], $allResults);}请注意
$this,如果您在类中使用了此功能,则可能需要在递归之前添加(将是
return $this->scanAllForMatch(...))
您可以这样称呼它:
// Don't pass a cursor yourself!$allResults = scanAllForMatch('*keypattern*');


