360企业自助建站,公司网站数据分析,做旅游地产的网站和公司,阿里云服务器怎么建网站家#xff0c;是心的方向。不论走多远#xff0c;总有一盏灯为你留着。桌上的碗筷多了几双#xff0c;笑声也多了几分温暖。家人团聚#xff0c;是最美的风景线。时间#xff1a;2024年 2月 8日 12:51:20 目录
前言
语法
示例 前言 试想一个场景,那就是在key非常多的… 家是心的方向。不论走多远总有一盏灯为你留着。桌上的碗筷多了几双笑声也多了几分温暖。家人团聚是最美的风景线。时间2024年 2月 8日 12:51:20 目录
前言
语法
示例 前言 试想一个场景,那就是在key非常多的情况下使用keys *操作毫无意外的这个操作会引起不必要的麻烦。由于redis是单线程模型因此它会占用非常长的时间导致服务器无法执行其他的命令从而阻塞等待较长时间。 Redis使用scan命令进行渐进式遍历进而解决直接使用keys * 获取时间较长的阻塞等待问题每次使用scan的时间复杂度都是O1但是要完整遍历所有的键需要执行多次scan。 scan命令可以每次只拿到一小部分key。想拿到所有的key就需要遍历多次。 渐进式遍历其实是一组命令这一组的命令的用法其实是非常相似的甚至说是一样的。其中的代表就是 scan。 下图是一个scan的使用案例 这里的cursor就类似于一种光标指向了当前遍历的位置。但是它不能理解为下标它不是连续的递增的整数。返回的数据中1这一栏表示下次遍历光标要从哪开始。 需要注意的是渐进式遍历在遍历的过程中不会在服务器这边存储任何状态信息是可以随时终止的不会对服务器产生副作用。 在遍历的过程中如果key发生变化增加key删除key和修改key可能会导致遍历时key被重复遍历或者遗漏这点务必在开发中考虑
语法
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]
时间复杂度O(1)返回值下一次 scan 的游标cursor以及本次得到的键。这个游标或许并没有什么直观的规律你只用了解下一次遍历的值是这个返回值的第一行数据即可。count限制一次遍历可以获得多少个元素如果不写的话默认是10个。有时候携带属性count返回结果也并不一定准确例如设置count 3但是有可能会返回四个key。Type表示你想要获取的key的类型如果不加那么默认就获取所有的类型。渐进式遍历是可以随时终止的,不会对服务器产生影响。
示例 首先插入10个数据 使用scan来进行遍历 其中7是下一次遍历的位置继续遍历 返回0代表遍历结束。 指定count继续尝试