Login
网站首页 > 文章中心 > 其它

redis的keys命令与scan命令_redis的scan命令的使用

作者:小编 更新时间:2023-08-11 15:22:47 浏览量:17人看过

1 keys命令

可以使用正则查找匹配的结果.时间复杂度是O(N),N为redis中所有key的总数量.

该命令有致命的缺点:

a. 没有limit,只能一次性获取所有符合条件的key.如果数据量很大的话,就会产生无穷无尽的输出.

b. keys命令是遍历算法,遍历全部的key,时间复杂度是O(N).redis是单线程的,如果keys查询的时间过长,redis的其它操作会被阻塞较长时间,造成redis较长时间的卡顿.要避免在生产环境使用该命令.

命令格式:keys pattern

2 scan命令

命令格式:scan cursor match pattern count num

cursor = 0时表示开始查询,第一次查询.每次查询结果中都会返回一个cursor,作为下次查询的开始游标.当某次查询返回的cursor=0时,表示已全部查询完毕.

count值设置为多少合适呢?

其实设置多少都可以,scan就是迭代查询,多次迭代总可以遍历完.但是如果设置的太大,超过总的key的数量,就相当于一次全部查询出来啦,同keys没啥区别啦.

localhost:6379> scan 0 match user_info:* count 10000
1) "6630"
2) 1) "user_info:web:82"
   2) "user_info:web:2020"
   3) "user_info:2014"
   4) "user_info:web:1747"
   5) "user_info:3703"
   6) "user_info:1777"
   7) "user_info:142"
localhost:6379> scan 6630 match user_info:* count 10000
1) "651"
2)  1) "user_info:1922"
2) "user_info:web:1922"
3) "user_info:web:1777"
4) "user_info:web:142"
5) "user_info:web:1921"
6) "user_info:web:2024"
7) "user_info:web:1676"
8) "user_info:2020"
9) "user_info:web:2023"
   10) "user_info:1774"
localhost:6379> scan 651 match user_info:* count 10000
1) "0"
2) 1) "user_info:web:2037"
   2) "user_info:web:344"

以上就是土嘎嘎小编为大家整理的redis的keys命令与scan命令相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章