告别keys *,掌握Redis scan系列命令的精髓
摘要助手
切换
SummaryGPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往订阅 💥
前往评论 💬
👀 部署教程
告别keys *,掌握Redis scan系列命令的精髓
dong4j1. 介绍
scan
命令的作用和keys *
的作用类似,主要用于查找 redis 中的键,但是在正式的生产环境中一般不会直接使用keys *
这个命令,因为他会返回所有的键,如果键的数量很多会导致查询时间很长,进而导致服务器阻塞,所以需要 scan 来进行更细致的查找
scan
总共有这几种命令:scan
、sscan
、hscan
、zscan
,分别用于迭代数据库中的:数据库中所有键、集合键、哈希键、有序集合键,命令具体结构如下:
1 | scan cursor [MATCH pattern] [COUNT count] [TYPE type] |
2. scan
scan cursor [MATCH pattern] [COUNT count] [TYPE type]
,cursor 表示游标,指查询开始的位置,count 默认为 10,查询完后会返回下一个开始的游标,当返回 0 的时候表示所有键查询完了
1 | 127.0.0.1:6379[2]> scan 0 |
MATCH 可以采用模糊匹配找出自己想要查找的键,这里的逻辑是先查出 20 个,再匹配,而不是先匹配再查询,这里加上 count
20 是因为默认查出的 10 个数中可能不能包含所有的相关项,所以把范围扩大到查 20 个,我这里测试的键总共有 15 个
1 | 127.0.0.1:6379[2]> scan 0 match mylist* count 20 |
TYPE 可以根据具体的结构类型来匹配该类型的键
1 | 127.0.0.1:6379[2]> scan 0 count 20 type list |
3. sscan
sscan key cursor [MATCH pattern] [COUNT count]
,sscan 的第一个参数总是集合类型的 key
1 | 127.0.0.1:6379[2]> sadd myset1 a b c d |
4. hscan
hscan key cursor [MATCH pattern] [COUNT count]
,sscan 的第一个参数总是哈希类型的 key
1 | 127.0.0.1:6379[2]> hset myhset1 kk1 vv1 kk2 vv2 kk3 vv3 |
5. zscan
zscan key cursor [MATCH pattern] [COUNT count]
,sscan 的第一个参数总是有序集合类型的 key
1 | 127.0.0.1:6379[2]> zadd myzadd1 1 zz1 2 zz2 3 zz3 |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果