redis对键值的遍历方法

redis 提供了两个命令来遍历所有的键

1、健全量遍历KEYS

正则匹配遍历
127.0.0.1:6379> mset country china city wu name henry
OK
127.0.0.1:6379> keys *//遍历所有的key
1) "city"
2) "country"
3) "name"
127.0.0.1:6379> keys *y //遍历以y结尾的,*表示匹配任意多个字符
1) "city"
2) "country"
127.0.0.1:6379> keys na?e //?只匹配一个字符
1) "name"
127.0.0.1:6379> keys n*e
1) "name"
127.0.0.1:6379>

keys [c,n]*:匹配以字母c和n开头的key

127.0.0.1:6379> keys [c,n]*
1) "city"
2) "country"
3) "name"

2、渐进式遍历SCAN,类似于分页

2.1,初始化数据

127.0.0.1:6379> mset n1 1 n2 2 n3 3 n4 4 n5 5 n6 6 n7 7 n8 8 n9 9 n10 10 n11 11
n12 12 n13 13
OK
127.0.0.1:6379>

2.2,遍历匹配

127.0.0.1:6379> scan 0 //0表示从头开始遍历
1) "1"  //此处返回值表示下一次scan需要的游标值,返回0表示已经读取完毕
2)  1) "city"
    2) "n9"
    3) "n3"
    4) "n7"
    5) "n1"
    6) "name"
    7) "n13"
    8) "n5"
    9) "n10"
   10) "n4"
127.0.0.1:6379> scan 1
1) "0" //返回0表示读取完毕
2) 1) "n8"
   2) "country"
   3) "n2"
   4) "n6"
   5) "n11"
   6) "n12"

2.3、scan的完整指令

scan cursor [MATCH pattern] [COUNT count]

127.0.0.1:6379> scan 0 match n* count 10  //count表示每次查询的key个数
1) "1"
2) 1) "n9"
   2) "n3"
   3) "n7"
   4) "n1"
   5) "name"
   6) "n13"
   7) "n5"
   8) "n10"
   9) "n4"
127.0.0.1:6379>

3、keys和scan的对比

scan 相比 keys 具备有以下特点 :
 
scankeys
不会阻塞线程(生产环境使用)阻塞
通过count限制查询数量无法限制数量
支持模糊匹配支持模糊匹配
返回的结果可能会重复,需要客户端去重不会重复

返回结果是空,并不意味着遍历结束,

只能根据返回值是否为0来确定

 
scan遍历中数据有修改,改动之后无法遍历 

4、遍历其他数据类型的scan

scan 字符串外:还有以下,他们的用法和scan 一样,具体参考官网: http://redisdoc.com/database/scan.html?highlight=scan
  • SCAN 命令用于迭代当前数据库中的数据库键。
  • SSCAN 命令用于迭代集合键中的元素。
  • HSCAN 命令用于迭代哈希键中的键值对。
  • ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和分值)。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值