当前位置:首页 > 问答 > 正文

Redis里想看所有数据其实没那么难,几招教你轻松搞定各种查看方法

综合自CSDN博客、掘金社区、知乎问答以及Redis官方文档的常见用法总结)

想在Redis里看看都存了些什么数据,这个想法很自然,但Redis本身不像关系型数据库那样有像SELECT * FROM table这样的万能查询语句,不过别担心,方法总比困难多,掌握下面这几招,你就能轻松浏览Redis里的数据了。

第一招:钥匙环法——先用KEYS命令摸清家底

既然Redis是键值数据库,那我们首先得知道库里都有哪些“钥匙”(Key),这时候,KEYS命令就派上用场了,它的用法很简单,就像在电脑里搜索文件一样,支持通配符。

Redis里想看所有数据其实没那么难,几招教你轻松搞定各种查看方法

  • KEYS *:这可能是最常用的命令了,它会列出当前数据库中的所有键,如果你的数据量不大,用这个一眼就能看清全貌。
  • KEYS user:*:如果你记得键的大致模式,比如所有用户信息都以"user:"开头,那么用这个命令就能筛选出所有相关的键,问号代表一个字符,比如KEYS user:?会匹配像"user:1", "user:2"这样的键。

这里有个非常重要的提醒(来源:Redis官方文档警告以及众多运维经验分享):KEYS命令在生产环境中要极其谨慎地使用,因为Redis是单线程的,当你的键数量非常庞大时,KEYS *可能会阻塞服务器一段时间,导致其他所有请求都无法处理,这可能引发严重的线上故障,它更适合在测试环境或者数据量确凿不多的情况下使用。

第二招:安全侦察兵——SCAN命令迭代扫描

为了解决KEYS命令的阻塞问题,Redis从2.8版本开始提供了SCAN命令(来源:Redis官方文档),它可以渐进式地、非阻塞地遍历所有键。

SCAN命令的工作原理有点像分页查询,你第一次执行SCAN 0,它会返回一部分键和一个新的游标(比如38),然后你再用SCAN 38去获取下一批,直到返回的游标是0,表示遍历结束。

Redis里想看所有数据其实没那么难,几招教你轻松搞定各种查看方法

  • SCAN 0 COUNT 100:从游标0开始,每次大概返回100个键。COUNT参数只是给服务器的一个提示,不一定精确返回指定数量,但能有效控制每次循环的数据量。
  • SSCAN, HSCAN, ZSCAN:这几个是用于集合(Set)、哈希(Hash)、有序集合(Sorted Set)这种复杂数据类型的,可以遍历它们内部的元素,当你想查看某个大Key里面具体存了什么时非常有用。

SCAN是安全浏览生产环境的首选工具,因为它不会卡住整个数据库。

第三招:逐个击破——用TYPE和对应命令查看值

通过KEYSSCAN找到键名后,我们自然想知道它对应的“值”是什么,但值有不同的数据类型,需要用不同的命令来查看。

  1. 先看类型:用TYPE your_key命令看看这个键是字符串(string)、列表(list)、哈希(hash)、集合(set)还是有序集合(zset)。
  2. 再用对应命令获取值
    • 字符串(string):最简单,直接用GET key
    • 哈希(hash)HGETALL key可以获取这个哈希的所有字段和值,如果字段很多,也可以用HSCAN来分批遍历,或者HKEYS只查看所有字段名。
    • 列表(list)LRANGE key 0 -1可以列出列表里从第一个到最后一个的所有元素。
    • 集合(set)SMEMBERS key可以查看集合中的所有成员,同样,大集合建议用SSCAN
    • 有序集合(zset)ZRANGE key 0 -1 WITHSCORES可以列出所有成员及其分数。

第四招:图形化利器——借助第三方工具

Redis里想看所有数据其实没那么难,几招教你轻松搞定各种查看方法

如果你觉得命令行不够直观,还有很多优秀的图形化界面(GUI)工具可以帮助你(来源:如知乎、掘金上开发者们的常用工具推荐),

  • RedisInsight:这是Redis官方推出的可视化工具,界面现代,功能强大,可以轻松地浏览键、查看不同类型的数据结构、执行命令甚至分析内存使用情况,对新手非常友好。
  • Another Redis Desktop Manager:一款开源的桌面管理器,连接和管理都很方便,支持Windows、macOS、Linux。
  • medis:一款macOS上设计精美的Redis客户端。

使用这些工具,就像使用Navicat看MySQL一样,点点鼠标就能看到数据和结构,非常方便。

想看Redis的所有数据,思路是“先找键,再查值”,核心步骤是:

  1. 列出键:数据量小或测试环境用KEYS,生产环境务必用SCAN
  2. 判断类型:对感兴趣的键使用TYPE命令。
  3. 获取值:根据类型,使用GETHGETALLLRANGE等对应命令,对于大Value,考虑使用HSCAN等遍历命令避免阻塞。
  4. 寻求便利:日常开发和管理,强烈推荐使用RedisInsight等图形化工具,效率倍增。

尤其是在正式服务器上,避免使用可能引起阻塞的命令(如KEYS *, FLUSHALL, 一次性获取巨大的SMEMBERS等),是一个良好的习惯,希望这几招能帮你轻松搞定Redis的数据查看问题!