java redis游标用法_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"


版权声明:本文为weixin_30537231原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。