key redis 遍历_如何遍历线上redis所有key

如何遍历线上redis所有key

2016 年 8 月 26 日, iamjs, 0

众所周知,redis是一个内存数据库,在使用redis时,不像mysql那样我们可以很方便看到数据库中各个key的大小以及分布情况。当线上实例出现超载问题时,我们要怎么去判断当前实例中有效数据是哪些?redis自带了一个命令keys,我们可以通过keys * 的方式获取所有的数据键名,但是这个操作是阻塞式的,如果在一个数千万key的高吞吐量数据库中执行这个命令,对线上的影响可想而知。因此在新版本的redis中,提供了一个新的命令scan。

SCAN 命令是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束。因为它每次都只便利一小部分数据,每次操作对应的时间复杂度是O(1)。

缺点:只支持version>=2.8

使用实例:

127.0.0.1:6379> debug populate 33

OK

127.0.0.1:6379> keys *

1) "key:15"

2) "key:10"

3) "key:31"

4) "key:19"

5) "key:7"

6) "key:12

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值