请知悉:本文最近一次更新为 4个月 前,文中内容可能已经过时。

嗯,怎么说呢,只能说挺烦人的,搞个基础服务还要自己做魔法。根本学不到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命令遇到的坑


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《阿里云 Redis scan 游标72057594037927936的解决方案》相关的博文:


留言

avatar
😀
😀😁😂😅😭🤭😋😘🤔😰😱🤪💪👍👎🤝🌹👌