在我的laravel应用程序中,我使用 predis/predis
包可以使用redis进行缓存。最近,根据文档中的建议,我已经切换到phpredis,但是我使用scan的部分代码被破坏了。在predis中,当我使用这样的扫描时:
Redis::scan(0,'match',$pattern //Test:*);
我曾经得到这样的结果:
[
"253952",
[
"Test::296589",
"Test::299112",
"Test::332487",
"Test::320358",
],
]
在本例中,253952是下一个游标,我可以通过它再次扫描以获得下一批这样的数据 Redis::scan(253952,'match',$pattern //Test:*);
我可以循环运行一段时间,直到我到达终点:
$all_keys = [];
$keys = RedisManager::scan(0, 'match', $pattern);
while ($keys[0] !== "0") {
foreach($keys[1] as $key) {
$all_keys[] = $key;
}
$keys = RedisManager::scan($keys[0], 'match', $pattern);
}
自从我切换到phpredis,我就不能再遍历这个列表了。首先,语法似乎不同:
$it=null;
$keys = RedisManager::scan($it,$pattern);
我不确定将null作为迭代器传递给第一个参数有什么意义。它也只是返回:
[
"Test::296589",
"Test::299112"
]
这只是结果的一部分。它没有给我所有的东西,也没有给我下一个光标。有人能给我指路吗?
1条答案
按热度按时间ttisahbt1#
我换成了
Phpredis
在我的本地服务器上,并使其与以下代码片段一起工作。文档中说明了扫描的不同用法。在调试或开发时使用
monitor
命令。当这个片段工作时,它打印出这样的东西;