当前位置:   article > 正文

redis的scan的使用_jedis.scan hash

jedis.scan hash

1.scan命令

在有些场景中,我们希望去查找符合部分字符匹配的key,
在scan命令出来之前,都是使用keys命令 ,keys pattern,这种命令严禁在线上环境中使用,因为keys命令会去匹配所有的key,与之类似的可能阻塞服务的命令还有smebmers,hgetall,如果hash和set中元素较多,由于redis的单线程的机制,这些类似的命令都可能阻塞redis服务。
在这样的背景下,scan命令诞生了,

SCAN cursor [MATCH pattern] [COUNT count]
  • 1

scan 命令调用完后每次会返回2个元素,第一个是下一次迭代的cursor,第一次cursor会设置为0,当最后一次scan 返回的cursor等于0时,表示整个scan遍历结束了,第二个返回的是List,一个匹配的key的数组。

cursor: :我们知道redis是key:value形式的,所以在外层的数据结构,很容易让我们联想到hashMap类似的数据接口,hashMap最基本的形式是采用数组加链表的形式进行存贮的,而cursor就是最外的一维数组的索引,第一次使用scan,cursor设置为0, 第二cursor设置成第一次返回cursor的值,如果cursor返回是0,表示迭代完毕。
match pattern: pattern支持redis的通配符,例如 * 表示匹配任意个字符,?匹配一个字符

count: 表示查找多少个数组元素,把匹配的结果,加入到返回的结果集中,count默认是10,可以根据实际需求自由的调整。

2. Jedis操作scan

Jedis jedis = new Jedis("127.0.0.1",6379);

		for(
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/735568
推荐阅读
相关标签
  

闽ICP备14008679号