想知道Redis里所有存的值咋看,教你几招简单方法快速查全量数据
- 问答
- 2026-01-16 23:19:45
- 1
想知道Redis里所有存的值咋看,教你几招简单方法快速查全量数据
你是不是也遇到过这种情况:想知道Redis这个内存数据库里到底存了些什么东西,但发现不像操作MySQL那样有个简单的“SELECT * FROM table”命令能一把捞出来所有数据,这是因为Redis的设计初衷是为了快,它默认就不支持直接遍历整个数据库的操作,怕影响到性能,尤其是在数据量特别大的时候,别担心,想知道家底儿还是有办法的,下面我就给你介绍几种实用的方法,帮你把Redis里的数据看个清清楚楚。
(信息来源:Redis官方文档关于键空间遍历的说明)
第一招:用KEYS命令,最简单但也最要小心
这可能是很多人第一个想到的命令,也是看起来最直白的,你只需要连接上Redis服务器,然后输入 KEYS *,它就会把当前数据库里所有的键(key)都给你列出来。
0.0.1:6379> KEYS *
1) "user:1001:name"
2) "user:1001:age"
3) "session:abc123"
4) "product:list"
看到了吧,所有的键名都出来了。
这里有个非常重要的警告! 这个命令虽然简单,但在生产环境(就是正在线上跑着真实业务的服务器)上一定要极其谨慎地使用,最好别用,为什么呢?因为 KEYS 命令是阻塞式的,它会一次性遍历整个数据库的所有键,然后才返回结果,如果你的Redis里存了几百万、几千万甚至更多的键,这个命令一执行,Redis服务器在这期间就无法处理其他的任何请求了,就像高速公路突然封路一样,会导致服务卡顿甚至短暂不可用,后果可能很严重。
(信息来源:Redis官方文档对KEYS命令的警告,明确指出该命令仅推荐在开发调试环境使用)
这个方法只适合在你自己的本地开发环境,或者数据量极小、完全没压力的测试环境下玩玩,用的时候心里一定要有这根弦。
第二招:用SCAN命令,安全可靠的“扫地僧”
既然 KEYS 命令这么危险,那有没有更安全的方法呢?当然有,那就是 SCAN 命令。SCAN 命令是Redis专门为了解决全量遍历问题而设计的,它的核心思想是“增量式遍历”,或者叫“游标遍历”。
你可以把它想象成一本很厚的书,KEYS 命令是让你一口气把整本书从头读到尾,而 SCAN 命令是让你一次只读几页,读完做个记号,下次从这个记号开始再读几页,直到读完,这样就不会长时间占用服务器资源。
它的用法是这样的:
0.0.1:6379> SCAN 0
1) "17" # 下一个游标值,如果为0表示遍历结束
2) 1) "key:1"
2) "key:2"
3) "key:3"
127.0.0.1:6379> SCAN 17
1) "0" # 游标回到0,表示所有数据已经遍历完了
2) 1) "key:4"
2) "key:5"
你第一次执行 SCAN 0,它返回两部分内容:一个是下一个游标值(比如例子里的"17"),另一个是这次扫描得到的一部分键的列表,然后你再用拿到的这个新游标值(17)去执行下一次 SCAN,直到返回的游标值变成0,就说明全部键都遍历完毕了。

这种方法的好处是,每次只扫描一小部分,对服务器的影响微乎其微,可以一边扫描一边正常处理其他客户端的请求,非常适合在生产环境中使用,虽然它不能保证在遍历过程中如果数据有增删,能100%扫描到所有当时存在的键(因为是非阻塞的,期间数据可能变化),但绝大多数情况下已经足够用了。
(信息来源:Redis官方文档中关于SCAN命令的原理和保证)
第三招:结合TYPE和具体数据类型的查询命令
上面两招 KEYS 和 SCAN 都只能帮你拿到所有的“键名”,但光知道键名还不够,我们通常还想知道每个键对应的“值”是什么,这时候就需要根据键存储的数据类型,使用不同的命令来获取值了。
Redis不是一种数据类型,它有字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等等,你得先知道键是什么类型,才能用对的命令去取它的值。
-
先看类型:用
TYPE key命令查看某个键的数据类型。0.0.1:6379> TYPE user:1001:name string -
再取值:
- 如果是 String(字符串),用
GET key。0.0.1:6379> GET user:1001:name "张三" - 如果是 Hash(哈希),相当于一个小字典,用
HGETALL key可以取出所有的字段和值。0.0.1:6379> HGETALL user:1001 1) "name" 2) "张三" 3) "age" 4) "25" - 如果是 List(列表),用
LRANGE key 0 -1可以取出列表里从第一个到最后一个的所有元素。0.0.1:6379> LRANGE mylist 0 -1 1) "item1" 2) "item2" 3) "item3" - 如果是 Set(集合),用
SMEMBERS key取出集合中的所有成员。0.0.1:6379> SMEMBERS myset 1) "member1" 2) "member2" - 如果是 Sorted Set(有序集合),用
ZRANGE key 0 -1 WITHSCORES取出所有成员和他们的分数。0.0.1:6379> ZRANGE myzset 0 -1 WITHSCORES 1) "one" 2) "1" 3) "two" 4) "2"
- 如果是 String(字符串),用
一个完整的查看全量数据的流程可以是:先用 SCAN 命令安全地获取所有键名,然后对每个键,先用 TYPE 判断类型,再根据类型使用对应的 GET、HGETALL 等命令把值取出来。

(信息来源:Redis官方文档中关于不同数据类型的操作命令)
第四招:借助第三方工具,图形化界面更省心
如果你觉得在命令行里一个个敲命令太麻烦,特别是键很多的时候,那么使用图形化的管理工具会方便很多,这些工具通常都提供了直观的界面,帮你自动完成扫描、分类、展示值和详细信息的过程。
常见的工具有:
- RedisInsight:这是Redis官方推出的可视化工具,功能强大且免费,连接上你的Redis实例后,它能以树状结构展示所有键,点击任何一个键就能直接看到它的类型、值、过期时间等详细信息,非常直观。
- Another Redis Desktop Manager:一款开源的桌面客户端,支持Windows、macOS、Linux,用起来也很方便。
- Redis Desktop Manager:一款经典的商业软件,有免费版和付费版。
用这些工具,你基本上点几下鼠标就能浏览整个数据库的内容了,对于不习惯命令行的同学来说是极大的解放。
(信息来源:各第三方工具的官方介绍和功能说明)
总结一下
想知道Redis里所有存的值,记住这几点:
- 绝对不要在生产环境用
KEYS *,除非你想搞个大新闻。 - 想安全遍历键,首选
SCAN命令,它是最佳实践。 - 获取值的时候,要先
TYPE看类型,再用对应的命令(如GET,HGETALL)去取。 - 怕麻烦的话,直接用 RedisInsight 这类图形化工具,省时省力。
希望这几招能帮到你,下次再想检查Redis里的数据时,就可以根据实际情况选择合适的方法了。
本文由芮以莲于2026-01-16发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/82064.html
