Redis-渐进式遍历scan的使用

目录

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有哪些~

举例:

Redis-渐进式遍历scan的使用_第1张图片


3、渐进式遍历的缺点

  •  渐进式遍历时,虽然解决了阻塞问题,但是如果遍历期间,redis内部的key有所变化,可能会导致遍历中的key会重复遍历,或者是遗漏~

4、补充知识点:redis中也区分database 

  • redis中,页存在database,平时我们会默认使用0号database;
  • redis中,默认提供了16了database
  • 使用命令select dbIndex来切换不同的database
  • 命令flushall是删除所有database中的所有key;
  • 命令flushdb是删除当前database中的偶有key; 

你可能感兴趣的:(Redis,redis,数据库,缓存)