redis如何使用scan指令代替keys指令

106次阅读
没有评论

共计 2108 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要为大家展示了“redis 如何使用 scan 指令代替 keys 指令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“redis 如何使用 scan 指令代替 keys 指令”这篇文章吧。

   

SCAN cursor [MATCH pattern] [COUNT count]

SCAN 命令及其相关的 SSCAN 命令、HSCAN 命令和 ZSCAN 命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements):

SCAN 命令用于迭代当前数据库中的数据库键。

SSCAN 命令用于迭代集合键中的元素。

HSCAN 命令用于迭代哈希键中的键值对。

ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

以上列出的四个命令都支持增量式迭代,它们每次执行都只会返回少量元素,所以这些命令可以用于生产环境,而不会出现像 KEYS 命令、SMEMBERS 命令带来的问题 —— 当 KEYS 命令被用于处理一个大的数据库时,又或者 SMEMBERS 命令被用于处理一个大的集合键时,它们可能会阻塞服务器达数秒之久。

不过,增量式迭代命令也不是没有缺点的:举个例子,使用 SMEMBERS 命令可以返回集合键当前包含的所有元素,但是对于 SCAN 这类增量式迭代命令来说,因为在对键进行增量式迭代的过程中,键可能会被修改,所以增量式迭代命令只能对被返回的元素提供有限的保证(offer limited guarantees about the returned elements)。

因为 SCAN、SSCAN、HSCAN 和 ZSCAN 四个命令的工作方式都非常相似,所以这个文档会一并介绍这四个命令,但是要记住:

SSCAN 命令、HSCAN 命令和 ZSCAN 命令的第一个参数总是一个数据库键。

而 SCAN 命令则不需要在第一个参数提供任何数据库键 —— 因为它迭代的是当前数据库中的所有数据库键。

scan 0 默认返回 10 条数据。

127.0.0.1:6379 scan 0

1) 81920
2)  1) CMD:1000004739:4
  2) CMD:1000010475:2
  3) CMD:380071400001208:766
  4) CMD:1000006866:LIST
  5) CMD:380071400001208:20415
  6) CMD:380071400001231:21530
  7) CMD:380071400001208:21780
  8) CMD:7485630165:LIST
  9) CMD:1000001545:2
  10) CMD:380071400001231:4387

可以用 count 参数指定返回数据量:

127.0.0.1:6379 scan 0 count 100

1) 104448
2)  1) CMD:1000004739:4
  2) CMD:1000010475:2
  3) CMD:380071400001208:766
  4) CMD:1000006866:LIST
  5) CMD:380071400001208:20415
  6) CMD:380071400001231:21530
  7) CMD:380071400001208:21780
  8) CMD:7485630165:LIST
  9) CMD:1000001545:2
  10) CMD:380071400001231:4387
  ……
  94) CMD:201610200062:6
  95) CMD:VF3748211006:3
  96) CMD:1000009121:4
  97) CMD:380071400001231:6563
  98) CMD:1000010252:ID
  99) CMD:1000005261:5
  100) SERVER:45568_0

使用 match 参数来匹配模式:

127.0.0.1:6379 scan 0 match CMD* count 100

1) 104448
2)  1) CMD:1000004739:4
  2) CMD:1000010475:2
  3) CMD:380071400001208:766
  4) CMD:1000006866:LIST
  5) CMD:380071400001208:20415
  6) CMD:380071400001231:21530
  7) CMD:380071400001208:21780
  8) CMD:7485630165:LIST
  9) CMD:1000001545:2
  10) CMD:380071400001231:4387
  ……
  86) CMD:201610200062:6
  87) CMD:VF3748211006:3
  88) CMD:1000009121:4
  89) CMD:380071400001231:6563
  90) CMD:1000010252:ID
  91) CMD:1000005261:5

最重要的是 scan 不会阻塞服务器,现网环境也可以用,真方便。

以上是“redis 如何使用 scan 指令代替 keys 指令”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计2108字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)