redis操作之迭代器(scan和hscan)讲解

当我们需要遍历Redis所有key或者指定模式的key时,首先想到的是KEYS命令,但是如果redis数据非常大,并且key也非常多的情况下,查询的时候很可能会很慢,造成整个redis阻塞,那么有什么办法解决呢?
当然有了,今天就简单的介绍一下,如:scan和hscan

格式如下:

SCAN cursor [MATCH pattern] [COUNT count]
HSCAN key cursor [MATCH pattern] [COUNT count]

SCAN命令是一个基于游标的迭代器, 这意味着命令每次被调用都需要使用上一次这个调用返回的游标作为该次调用的游标参数,以此来延续之前的迭代过程, 当SCAN命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束,HSCAN同SCAN命令相同。

一、 hash操作

1,查看一下hash有多少条记录
127.0.0.1:6379[1]> hgetall pms:1
 1) "stock"
 2) "12"
 3) "freeze"
 4) "10"
 5) "stock:1"
 6) "11"
 7) "stock:2"
 8) "23"
 9) "stock:freeze:1"
10) "111"
11) "stock:5"
12) "1212"

2,模糊查看pms:1下的键
127.0.0.1:6379[1]> hscan pms:1 0 match stock:* count 100
1) "0"
2) 1) "stock:1"
   2) "11"
   3) "stock:2"
   4) "23"
   5) "stock:freeze:1"
   6) "111"
   7) "stock:5"
   8) "1212"

3,模糊查看pms:1下的键
127.0.0.1:6379[1]> hscan pms:1 0 match stock* count 100
1) "0"
2)  1) "stock"
    2) "12"
    3) "stock:1"
    4) "11"
    5) "stock:2"
    6) "23"
    7) "stock:freeze:1"
    8) "111"
    9) "stock:5"
   10) "1212"

4,模糊查看pms:1下的键
127.0.0.1:6379[1]> hscan pms:1 0 match stock:freeze:* count 100
1) "0"
2) 1) "stock:freeze:1"
   2) "111"

二、键值对操作

1,查看有多少个键
127.0.0.1:6379[1]> keys *                                 
 1) "pms:1"                                               
 2) "pms:freeze:21"                                       
 3) "pms:10"                                              
 4) "pms:11"                                              
 5) "pms:9"                                               
 6) "pms:4"                                               
 7) "name"                                                
 8) "pms:5"                                               
 9) "pms:8"                                               
10) "pms:7"                                               
11) "pms:2"                                               
12) "go:123"                                              
13) "pms:3"                                               
14) "pms:6"

2,模糊查找pms:*的键                                      
127.0.0.1:6379[1]> scan 0 match pms:* count 10            
1) "3"                                                    
2) 1) "pms:1"                                             
   2) "pms:8"                                             
   3) "pms:freeze:21"                                     
   4) "pms:5"                                             
   5) "pms:11"                                            
   6) "pms:9"                                             
   7) "pms:4"                                             
   8) "pms:3"                                             
   9) "pms:6"

3,模糊查找pms:*的键,游标从3开始 
127.0.0.1:6379[1]> scan 3 match pms:* count 10            
1) "0"                                                    
2) 1) "pms:10"                                            
   2) "pms:7"                                             
   3) "pms:2"             

转载于:https://blog.51cto.com/13581092/2149178

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值