嗯,怎么说呢,只能说挺烦人的,搞个基础服务还要自己做魔法。根本学不到AWS的精髓,惹人厌,但你还没办法,公司要用,那就说说背景吧:
PHP Redis scan最终会获取到一个固定游标72057594037927936上(2的56次方),这和Redis默认返回0游标表示终止不同。
随手搜了下,phpredis scan溢出后就会是这样的结果。那问题总得解决啊,阿里云自创了个iscan的指令,调用示例如下:
<?php
$idx = 0; // Redis 分片序号,三分片就是0,1,2
$scan_res = $redis->rawCommand('ISCAN', $idx, $it, 'MATCH', '*', 'COUNT', 10000);
$it = $scan_res[0];
$arr_keys = $scan_res[1];
其他不多说什么,自己领悟吧。
参考资料
redis集群scan_phpredis在阿里云集群版Redis使用scan命令遇到的坑
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。
留言