Redis常见问题

Redis之从海量key里查询出某一个固定前缀的key

KEYS pattern :查找所有符合给定模式pattern的key

  • keys命令一次性返回所有匹配的key
  • 键的数量过大会使服务器卡顿

keys指令可以达到目标,但是需要注意数据的规模,当数据量特别大时,keys命令会花费较长时间,导致服务器卡顿

在生产环境中想要查询固定前缀的key,不能使用keys命令,可以使用scan命令

SCAN cursor  [MATCH pattern] [COUNT count]

cursor : 游标          

pattern : 匹配模式

count : 取出的元素个数 , 不准确 , 模糊匹配 , 只能取大概个数

scan命令作用:无阻塞的提取符合该匹配模式的元素列表,只可提取少量元素,且元素数量不确定,模糊匹配,可用于生产环境

  • 基于游标的迭代器,需要基于上一次的游标延续之前的迭代过程
  • 以0作为游标开始一次新的迭代,直到命令返回游标0完成一次遍历
  • 不保证每次执行都返回某个给定数量的元素,支持模糊查询
  • 一次返回的数量不可控,只能大概率符合count参数
127.0.0.1:6379> scan 0 match k1* count 10               #从0游标开始 查找以k1开头的key  取10个

1) "11534336"                                                         #返回的游标

2)  1)"k182621518"                                               #查找出的符合结果的key

     2)"k122251511"
     3)"k222489405"

127.0.0.1:6379> scan 11534336 match k1* count 10                #从返回的游标开始 进行下一次查询

1) "25150561"                                      #返回的游标   需要注意 返回的游标是随机的 并不一定比第一次小

2)  1)"k104150025"                                               #查找出的符合结果的key

     2)"k190648005"

     3)"k160544807"

     4)"k192042260"

     5)"k130641813"

 

Redis大量的key同时过期

大量key同时过期,由于清除大量key很耗时,可能会出现短暂的卡顿现象

解决方案:在设置key的过期时间时,给每个key加上随机值

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值