目录
1、为什么使用渐进式遍历?
2、scan的使用
3、渐进式遍历的缺点
4、补充知识点:redis中也区分database
1、为什么使用渐进式遍历?
前面的博客中,我们有提到使用keys *来获取所有的key,但这种办法,当Redis中存储的有很多key时,实行此命令所耗费的时长就会很长,不符合使用规范,redis一般情况下,都会要求命令执行时,短平快~
因此提出使用渐进式遍历,也就是说,在不能使用keys *的情况下,我又想获取redis中的所有的key,就需要使用渐进式命令,所谓渐进,就是循序渐进,我们一次取出一点,直到取完~
渐进式命令,有一组命令,我们暂时只介绍一种scan,其他命令的使用都是一样的~
2、scan的使用
- scan:渐进式遍历redis中当前数据库中的数据库键key
- 语法:scan cursor [MATCH pattern] [COUNT count] [TYPE type]
- 参数说明1:cursor->光标位置。填写光标位置,就从指定位置开始往后遍历
- 参数说明2:MATCH->通配符参数,和keys命令一样~
- 参数说明3:COUNT->往后遍历多少个元素【默认为10】
- 参数说明4:TYPE->指定只遍历某个数据类型
- 返回值:类似于一个二元组,第一个元素为下一次遍历时从哪个光标开始【为0时,说明遍历结束】;第二个元素是一个列表,此次遍历所取到的key有哪些~
举例:
3、渐进式遍历的缺点
- 渐进式遍历时,虽然解决了阻塞问题,但是如果遍历期间,redis内部的key有所变化,可能会导致遍历中的key会重复遍历,或者是遗漏~
4、补充知识点:redis中也区分database
- redis中,页存在database,平时我们会默认使用0号database;
- redis中,默认提供了16了database
- 使用命令select dbIndex来切换不同的database
- 命令flushall是删除所有database中的所有key;
- 命令flushdb是删除当前database中的偶有key;