• inmaytide

    监控界面

    生产环境的 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 列表、大集合,还是内存占用上出问题?

    主楼
  • baiic

    java 写的吗?

    #1
  • tanszhe

    什么意思? 把千万 key 全部展示出来? 可以在千万 key 里面搜索?

    #2
  • inmaytide

    @baiic golang 写的

    #3
  • ala2008

    居然没开源

    #4
  • inmaytide

    @baiic wails golang + vue

    #5
  • inmaytide

    @ala2008 没有开源

    #6
  • ala2008

    可以参考现有的,开源也能盈利

    #17
  • inmaytide

    @tanszhe 支持

    #7
  • maocat

    额,不开源,不敢用,redis 丢了 = 服务器权限丢了

    #8
  • root71370

    不开源谁会用?这跟上个帖子用百度搜索下载了个录屏软件有啥区别

    #9
  • inmaytide

    @maocat
    @root71370
    理解,Redis 客户端权限比较高,不开源不敢用很正常
    这款软件没有计划开源,它是本地客户端,数据不经过我们服务器;更适合能接受闭源桌面工具、或只连开发测试库的场景。生产环境如果强制开源客户端,建议继续用开源方案。

    #10
  • qwer666df

    开发测试库很少能千万级吧, 能千万级的也不会用闭源方案, 感觉目标用户群怕是有点少,

    #12
  • inmaytide

    @baiic
    桌面端是 Go + Wails ( WebView ),前端 Vue ;不是 Java 写的客户端。
    说的「 Java 」是指能把 Redis 里的 JDK 序列化对象解出来看,方便 Java 业务排查缓存

    #11
  • baiic

    不开源,但是免费使用,不知道博主是出于什么考量?是为以后收费版本引流吗?

    #13
  • inmaytide

    @qwer666df
    嗯,千万级是按极端场景做的内存/渲染优化,普通库用起来会更从容轻盈。
    另外对 Java 开发者更友好:不管是老项目 JDK 序列化,还是 Jackson / Fastjson 多态 JSON ,都可以更直观的查看和编辑,这块是专门处理过的。
    还有很多没提到的点,可以试用下看看

    #14
  • inmaytide

    @baiic
    想是想…… 但没那个实力。
    先把 Java 后端同行的痛点处理漂亮了,功能做扎实、好用,用户量起来了再说

    #15
  • zhangshaohan

    感觉还不错,比我目前用的好用

    #16
  • oky

    https://github.com/vicanso/zedis 有对比过这个么,也是论坛里面的人做的好像,感觉他这个性能还更好点

    #18
  • inmaytide

    @zhangshaohan
    谢谢认可。方便说下之前主要卡在哪吗?

    #19
  • inmaytide

    @oky
    Zedis 做得不错:Rust + GPUI 原生渲染,帧率、流畅度、开源都很强。
    对比下来 RedisViewer 侧重点不一样:更偏 Java 研发排查——JDK 序列化、Jackson / Fastjson 多态 JSON 的查看与编辑;以及 SlowLog / BigKey / HotKey 这类故障现象的本地排查入口。

    如果更看重原生性能和开源,Zedis 很值得一试;如果经常要对 Java 程序的缓存下手,可以优先考虑 RedisViewer 。

    #20
  • orcl-v2ex

    看着还可以,有没有可能个开也有使用场景呢?单纯作为自己本地调试的可视化软件,但这个闭源有点...拉低好感度,hahah 。不过点赞👍

    #21
  • inmaytide

    @orcl
    有的,个人开发、本地连本机或测试 Redis 调试,本来就是很常见的用法。
    闭源这点理解,能接受再试试看~谢谢点赞

    #22
  • lesismal

    没必要。

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

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

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

    唯一值得称赞的点,是用 golang ,用 rust 也很好。比用 java 、nodejs 那帮容易毒的强得多。

    #23
  • inmaytide

    @lesismal 感谢反馈

    #24

发表回复

登录后回复