做了个支持千万级 Keys Redis 桌面客户端,支持 Java 字节码反序列化,求拍

inmaytide 2026-09-03 14:21 1

监控界面


生产环境的 Redis 经常达到千万级 Key 。很多桌面 GUI 一旦连上这类实例,就会出现界面卡顿、内存持续上涨,甚至进程崩溃。打开成员较多的 Hash / ZSet 时,如果客户端试图一次性拉取全部数据,窗口同样容易失去响应。


基于这类问题,我重新设计了另一套加载与渲染路径的软件 RedisViewer——一款面向研发调试的本地 Redis 桌面客户端。它的目标是:采用虚拟滚动应对千万级别数据量,并在超大库场景下增加加载确认,避免误操作拖垮客户端。


把「加载」和「渲染」分开处理


不少 Redis GUI 把两件事绑在一起:Key 如何从 Redis 拉取,以及每一行如何绘制到界面上。数据量上来之后,问题会同时放大。


RedisViewer 的处理方式是:



  • 按条件加载目标 Key 。 通过 ScanConfig 配置查询条件(默认 pattern 为 *),使用 Redis SCAN 完成目标 Key 的完整扫描与加载。研发环境里,这样可以直接拿到完整结果集,减少反复点击扫描更多分页带来的麻烦。

  • 大库先确认。DBSIZE ≥ 10 万(阈值可配置,对应「 SCAN 免确认」)时,加载前会要求确认,降低误扫生产库的风险。

  • 只渲染可见区域。 Key 列表使用虚拟滚动,结果集规模不等于界面节点规模,有助于控制内存并保持滚动流畅。


内存占用


Hash / Set / ZSet 成员走另一套策略:分页异步加载,避免一次全量返回把界面卡住。集合规模到数万甚至十几万成员时,差异会比较明显。


概括一下:研发场景默认按条件全量加载目标 Key ;库规模较大时先确认;列表始终虚拟渲染。 在千万级实例上兼顾流畅性和内存占用,主要依靠这三点。


Java 场景下的值查看与编辑


Java 服务写入 Redis 的内容经常不是普通字符串:




  • JDK 序列化:直接查看反序列化后的对象结构
    Java 值查看




  • 转义 / 控制字符:可视化查看与编辑,减少对着原始十六进制猜测的成本
    Escape characters




  • Jackson / Fastjson 多态 JSON:按结构查看并编辑
    Jackson / Fastjson polymorphic JSON




当需要核对缓存内容是否与业务对象一致时,仅靠 GET 往往不够。


本地完成常见性能排查


除了 Key 浏览,RedisViewer 也覆盖常见排查入口:



  • SlowLog:定位慢命令

  • BigKey:内存持续上涨时查找大 Key

  • HotKey:短时 MONITOR 采样,识别热点 Key / 高频命令

  • MONITOR:短窗口查看实时命令流

  • Command stats:观察命令分布,区分业务流量与监控/连接噪声


常见用法是先看 CPU 、内存、命令量、命中率等趋势,再进入 SlowLog / BigKey / HotKey 下钻。数据在本地处理,不会上传到 RedisViewer 服务器。


本地优先,免费,跨平台


连接凭据本地加密保存;可选 WebDAV 仅用于同步连接配置。Redis 的 Key / Value 不会上传。


支持 Windows / macOS / Linux ,免费使用。


下载地址: https://redisviewer.com




欢迎反馈:研发环境里,你更习惯「按条件一次加载完整结果集」,还是「始终分页加载」?你现在用的 GUI ,通常先在 Key 列表、大集合,还是内存占用上出问题?

最新回复 (24)
  • baiic 09-03 14:38
    1
    java 写的吗?
  • tanszhe 09-03 14:46
    2
    什么意思? 把千万 key 全部展示出来? 可以在千万 key 里面搜索?
  • inmaytide 楼主 09-03 14:48
    3
    @baiic golang 写的
  • ala2008 09-03 14:51
    4
    居然没开源
  • inmaytide 楼主 09-03 14:53
    5
    @baiic wails golang + vue
  • inmaytide 楼主 09-03 14:55
    6
    @ala2008 没有开源
  • inmaytide 楼主 09-03 14:55
    7
    @tanszhe 支持
  • maocat 09-03 15:06
    8
    额,不开源,不敢用,redis 丢了 = 服务器权限丢了
  • root71370 09-03 15:23
    9
    不开源谁会用?这跟上个帖子用百度搜索下载了个录屏软件有啥区别
  • inmaytide 楼主 09-03 15:47
    10
    @maocat
    @root71370
    理解,Redis 客户端权限比较高,不开源不敢用很正常
    这款软件没有计划开源,它是本地客户端,数据不经过我们服务器;更适合能接受闭源桌面工具、或只连开发测试库的场景。生产环境如果强制开源客户端,建议继续用开源方案。
  • inmaytide 楼主 09-03 15:49
    11
    @baiic
    桌面端是 Go + Wails ( WebView ),前端 Vue ;不是 Java 写的客户端。
    说的「 Java 」是指能把 Redis 里的 JDK 序列化对象解出来看,方便 Java 业务排查缓存
  • qwer666df 09-03 16:25
    12
    @inmaytide #10 开发测试库很少能千万级吧, 能千万级的也不会用闭源方案, 感觉目标用户群怕是有点少,
  • baiic 09-03 16:29
    13
    不开源,但是免费使用,不知道博主是出于什么考量?是为以后收费版本引流吗?
  • inmaytide 楼主 09-03 16:35
    14
    @qwer666df
    嗯,千万级是按极端场景做的内存/渲染优化,普通库用起来会更从容轻盈。
    另外对 Java 开发者更友好:不管是老项目 JDK 序列化,还是 Jackson / Fastjson 多态 JSON ,都可以更直观的查看和编辑,这块是专门处理过的。
    还有很多没提到的点,可以试用下看看
  • inmaytide 楼主 09-03 16:39
    15
    @baiic
    想是想…… 但没那个实力。
    先把 Java 后端同行的痛点处理漂亮了,功能做扎实、好用,用户量起来了再说
  • zhangshaohan 09-03 17:25
    16
    感觉还不错,比我目前用的好用
  • ala2008 09-03 18:18
    17
    @inmaytide #6 可以参考现有的,开源也能盈利
  • oky 09-03 18:39
    18
    https://github.com/vicanso/zedis 有对比过这个么,也是论坛里面的人做的好像,感觉他这个性能还更好点
  • inmaytide 楼主 09-03 18:44
    19
    @zhangshaohan
    谢谢认可。方便说下之前主要卡在哪吗?
  • inmaytide 楼主 09-03 18:55
    20
    @oky
    Zedis 做得不错:Rust + GPUI 原生渲染,帧率、流畅度、开源都很强。
    对比下来 RedisViewer 侧重点不一样:更偏 Java 研发排查——JDK 序列化、Jackson / Fastjson 多态 JSON 的查看与编辑;以及 SlowLog / BigKey / HotKey 这类故障现象的本地排查入口。

    如果更看重原生性能和开源,Zedis 很值得一试;如果经常要对 Java 程序的缓存下手,可以优先考虑 RedisViewer 。
  • orcl 09-03 19:03
    21
    看着还可以,有没有可能个开也有使用场景呢?单纯作为自己本地调试的可视化软件,但这个闭源有点...拉低好感度,hahah 。不过点赞👍
  • inmaytide 楼主 09-03 19:31
    22
    @orcl
    有的,个人开发、本地连本机或测试 Redis 调试,本来就是很常见的用法。
    闭源这点理解,能接受再试试看~谢谢点赞
  • lesismal 09-03 22:53
    23
    没必要。

    客户端千万级,人眼也处理不来。

    一个不小心、加载大量 key 进来,而 key 可能常更新,如果同步更新,给 redis server 很大压力。
    平时怕 devops 之类的人搞出问题、操作规范里甚至都要求避免类似风险行为和习惯的。

    这种安全敏感的软件,不开源、也不走商业路线背书,谁随便就用,那可真是艺高人胆大了。
    另外,这些,如果自己想搞,只出嘴、AI 也很快搞出来一个,所以,时代变了,不开源当宝贝似的也没必要。

    唯一值得称赞的点,是用 golang ,用 rust 也很好。比用 java 、nodejs 那帮容易毒的强得多。
  • inmaytide 楼主 09-04 07:43
    24
    @lesismal 感谢反馈
* 帖子来源V2EX
返回