怎么用Redis快速查出当前库里所有key,操作简单又实用
- 问答
- 2026-01-12 06:42:30
- 3
(信息来源:Redis官方文档、博客园《Redis keys命令使用指南》、CSDN《Redis键操作实战》)
要快速查出Redis当前库里所有key,最简单直接的方法是使用KEYS命令,打开Redis命令行工具,输入KEYS *,屏幕上就会立刻列出当前数据库中的所有键,比如你存了用户数据user:1001、商品数据product:2024,运行命令后这些键名会一口气全显示出来,星号是个通配符,代表匹配任意字符,相当于在问Redis“把所有的钥匙都给我看看”。
(信息来源:Redis官方文档KEYS命令说明、掘金《Redis扫描命令SCAN详解》)
但如果你管理的Redis数据量特别大,比如有几百上千万个key,直接敲KEYS *可能会惹麻烦,因为这个命令会一次性遍历整个键空间,就像让一个图书管理员不开索引、从头到尾翻遍仓库找书,期间服务器会被阻塞,其他查询和操作都得等着,可能导致服务卡顿甚至短暂不可用,所以官方明确警告,KEYS命令只建议在开发调试环境用,生产环境千万别随便试。
(信息来源:Redis官方文档SCAN命令章节、知乎专栏《Redis大数据量键值遍历方案》)
那线上环境怎么安全地查全库key呢?答案是用SCAN命令,它像一把“分页扫描仪”,每次只取一小部分key,避免长时间阻塞,操作很简单:第一次输入SCAN 0(0代表从游标起点开始),Redis会返回两部分内容:一个是下次扫描用的新游标数字,比如125;另一部分是本次扫描到的部分key列表,下次你再输入SCAN 125,继续往下扫描,直到游标返回0,说明全部key都遍历完了,虽然操作比KEYS多几步,但服务器压力小,边扫描边正常服务其他请求。
(信息来源:CSDN《Redis数据库切换与键统计技巧》、博客园《Redis日常管理命令合集》)
有时候你可能忘了自己当前在哪个库操作——Redis默认有16个库(编号0-15),先敲个SELECT 1就能切换到1号库,再用SCAN扫描,如果想快速估算key总数而不看具体内容,可以用INFO keyspace命令,它直接显示每个库的键数量,比如db0:keys=1500表示0号库有1500个key。

(信息来源:Stack Overflow相关讨论、腾讯云开发者社区《Redis键模式匹配实践》)
实际应用中,我们经常按模式找key,比如只查以order:2024开头的键,可以用KEYS order:2024*或更安全的SCAN 0 MATCH order:2024*,这里的MATCH参数和KEYS一样支持通配符:问号匹配单个字符(如user:10?能找到user:100和user:101),星号匹配任意长度字符。
(信息来源:GitHub上redis-cli工具说明、个人技术博客《Redis命令行实用技巧》)
如果你觉得在命令行手动SCAN麻烦,还可以用redis-cli工具搭配命令一键导出,比如在系统终端执行:

redis-cli --scan --pattern "*" > all_keys.txt
这条命令会扫描所有key并保存到文本文件,既避免阻塞服务,又能离线查看,要统计高频前缀的key数量,可以结合Shell命令处理,比如cat all_keys.txt | cut -d ':' -f1 | sort | uniq -c就能按前缀分类计数。
(信息来源:Bilibeli技术视频《Redis可视化工具测评》、Baidu搜索“Redis桌面管理工具”)
对于习惯图形化操作的人,一些可视化工具更省事,像Redis Desktop Manager、Another Redis Desktop Manager这类软件,连上数据库后直接点开“键列表”标签页,工具会自动用SCAN方式加载所有key,滚动浏览时还能看到键的类型和过期时间,特别适合不熟悉命令的运维人员。
(信息来源:Redis官方性能优化建议、阿里云社区《Redis键命名规范最佳实践》)
最后提醒个细节:无论用哪种方法,键的命名方式直接影响查询效率,比如把业务前缀放在键名开头(如mall:user:1001),用SCAN MATCH mall:*时能利用模式匹配快速缩小范围,避免在键名中部或尾部使用通配符(如*:cart),否则扫描时只能全库匹配,速度慢很多。
日常开发调试用KEYS *省事,生产环境用SCAN命令分批次查,搭配可视化工具或脚本处理结果,就能既安全又高效地掌握Redis里的键情况。
本文由召安青于2026-01-12发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/79159.html
