【发布时间】:2021-02-03 20:15:17
【问题描述】:
在我的 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:*);
我可以在一个while循环中运行它,直到我到达终点:
$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"
]
这只是结果的一部分。它没有给我一切,也没有给我下一个光标。有人可以指导我正确的方向吗?
【问题讨论】:
标签: laravel redis predis phpredis