我用 Rust + GPUI 写了一个 Redis 客户端Zedis - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
treexie
V2EX    分享创造

我用 Rust + GPUI 写了一个 Redis 客户端Zedis

  •  
  •   treexie 6 天前 3407 次点击

    在这个人人都在喊“不要重复造轮子”的时代,我还是又造了一个轮子Zedis

    Zedis 是什么?

    简单来说,Zedis 是一个追求极致性能的 Redis GUI 客户端。

    市面上的 Redis 客户端有很多,zedis 也不是为了成为更好的 GUI 客户端,作为一名热衷于“通过造轮子来学习”的开发者,尝试构建 zedis 只是为了我自己更好的学习 rust ,后续我会说一下学习各种技术的造轮子之路。

    Zedis 的核心目标只有一个:

    它基于 Rust 编写,UI 层使用了与 Zed Editor 同款的渲染引擎 GPUI。这意味着 Zedis 的每一个像素都是由 GPU 直接绘制的,带来了原生、60 FPS 丝般顺滑的体验。

    核心特性一览

    • 极速渲染:告别 HTML/CSS 的重绘负担,即使在低配机器上也能秒开。

    • 虚拟列表:实测轻松处理 10 万+ 级别的 Key 列表(我的手提百万级别也很流畅),配合 SCAN 迭代,滚动浏览毫无卡顿。

    • 数据自动检测

      • 如果是 GZIP/ZSTD 压缩的数据,它会自动解压显示。

      • 如果是 JSON/MsgPack,它会自动格式化并高亮。

      • 如果是图片二进制流,直接显示预览图。

    • 开箱即用**:自动适配 Cluster 、Sentinel (单 Master 可免填名称)或单机模式。

    • 全平台支持:支持 macOSWindowsLinux,均可在 GitHub Release 下载。


    为什么要写 Zedis ?

    我一直坚信“熟能生巧”。从前端、Node.js 、Flutter 、Go 一路走来,我习惯通过写各种杂七杂八的模块和工具来掌握一门语言。

    Rust 大概是我觉得上手曲线最陡峭的语言了,也因此成了我最近几年造轮子的首选。以下的几个项目就是我这几年学习 rust 所造的轮子了(顺带打广告让大家关注关注):

    • cyberapi 基于 tauri 的类似 postman 的 api 工具(我真正开始学会 rust 的第一个项目)

    • diving-rs 参考 dive 实现的 docker 镜像查看工具

    • charts-rs rust 实现的图表模块,可以输出 svg 或者各种图片形式的图表

    • pingap 基于 pingora 的 http 反向代理(我真正一行行代码手写的 rust 项目,后续相关注释通过 gemini 生成)

    • zedis 基于 zed 的 gpui 实现的 redis GUI 客户端(绝大部分的逻辑自己实现好之后,让 gemini 分析语法调整)

    关于 Zedis 与 AI 的协作

    Zedis 的诞生其实是个巧合。当时看到了 gpui-component,单纯想试试用 GPUI 构建桌面程序的感觉。

    与之前的项目不同,Zedis 是一个全面使用 AI 辅助的产品。这里指的不是简单的 Vibe Coding ,而是将 AI 作为“结对编程”的导师。

    在对 GPUI 框架完全陌生的情况下,我负责核心逻辑的实现,而让 Gemini 充当了“文档检索员”和“代码审查员”的角色帮我查阅分散的文档,分析模块语法,整理代码结构,并提供优化建议。在一个月的工作之余能开发出这个基本可用的版本,AI 功不可没。我并不抗拒 AI ,但我更愿意把它定义为一个“更先进的工具”,而非简单的“生产力”

    结语

    Zedis 算是给我 2025 年的 Rust 之旅画上了一个句号。

    回顾这一年,虽然我绝大部分时间了 Pingap 这个面向基础设施的项目上,但 Zedis 代表了我对 Rust 在桌面端应用的一次全新尝试。

    说实话,在繁重的工作之余死磕 Rust 确实是一场“苦修”。即便折腾了这么久,我依然觉得自己在 Rust 的世界里才刚刚入门。这是一门门槛过高的语言,真心不建议大家实际项目中为了用而用,除非你真的需要它带来的性能或安全红利。

    无论你是想体验一下原生 GPUI 的速度,还是单纯对我的造轮子之路感兴趣,都欢迎来 GitHub 逛逛。

    GitHub: https://github.com/vicanso/zedis (如果有空,欢迎点个 Star ,感谢关注!)

    41 条回复    2026-01-04 23:40:37 +08:00
    kkhaike
        1
    kkhaike  
       6 天前
    Z 打头以为是 zig 写的
    treexie
        2
    treexie  
    OP
       6 天前
    @kkhaike Gemini 推荐的名字,发布前我查了一下,的确有个 zig 写的 redis 模块叫 zedis 。
    guotie
        3
    guotie  
       6 天前
    nice
    GzhiYi
        4
    GzhiYi  
       6 天前
    点赞,速度不错。不过功能还没完善好?我一时没找到 value 编辑以及 key 重命名之类的。可以向 medis 看齐一下功能
    treexie
        5
    treexie  
    OP
       6 天前
    @GzhiYi value 编辑是可以的,key 重命名未支持,功能的确是不完善的,暂时只能说是能用。

    Medis 的功能是很齐全,后续会慢慢的完善,也坦白说一句,medis 的性能我觉得更好。
    bli22ard
        6
    bli22ard  
       6 天前
    这启动速度确实牛逼。我这 windows 没显示图标,不知道是不是没弄。
    treexie
        7
    treexie  
    OP
       6 天前
    @bli22ard 毛胚房阶段,很多细节都没处理。
    GzhiYi
        8
    GzhiYi  
       6 天前
    @treexie 是我窗口太小了没看到哈哈。不错的
    GzhiYi
        9
    GzhiYi  
       6 天前
    默认字体还是偏大了,效率工具其实像 medis 一样小一些可视的内容多一些感觉更好,而且我尝试修改字体大小,未有生效。macos 15.4.1 。
    treexie
        10
    treexie  
    OP
       6 天前   1
    @GzhiYi 现在只能修改编辑器那部分的字体,后续优化为全局
    QlanQ
        11
    QlanQ  
       6 天前
    终于有了呀,redis 那么常用,但是好用的 gui 真的木有
    点亮了,学习下这个项目
    tuimaochang
        12
    tuimaochang  
       6 天前
    牛逼,star 了
    GzhiYi
        13
    GzhiYi  
       6 天前
    @QlanQ medis 和 tiny drm 都挺好用的
    QlanQ
        14
    QlanQ  
       6 天前
    @GzhiYi #13 是的,就是 medis 2 收费,而且还很贵
    tinydrm 的话,不是引战哦,go 的 gui 真的不好看
    zengxs
        15
    zengxs  
       6 天前
    CPU/内存 占用 都比 Medis 高很多(打开同一个数据库的同一个 key 情况下),不过也正常,Apple 平台上第三方框架还是很难超过 Swift 的优化程度
    willygeek007
        16
    willygeek007  
       6 天前
    这启动速度,这安装包大小,爱了爱了。
    MagicLi
        17
    MagicLi  
       6 天前
    反馈:支持数据库选择.
    treexie
        18
    treexie  
    OP
       6 天前
    @MagicLi 后续会支持选择数据库
    FrankAdler
        19
    FrankAdler  
       6 天前 via Android
    支持一下
    guzzhao
        20
    guzzhao  
       6 天前
    @QlanQ #14 呃.. tinyrdm UI 是 Naive UI
    osdodo
        21
    osdodo  
       6 天前
    op 搞的不错,我用 Rust 和 Ratatui 也搞了一个 TUI 版的: https://github.com/osdodo/picordm ,占用资源比较低,不过功能应该比不上收费的,我主要是自己用
    osdodo
        22
    osdodo  
       6 天前
    @QlanQ 我也不喜欢 tinydrm 的 UI ,所以我自己搞了个更轻量的 TUI 版;)
    osdodo
        23
    osdodo  
       6 天前
    @guzzhao tiny rdm 用的和 tauri 一样的方案,用 web 技术写前端
    huangliu
        24
    huangliu  
       6 天前
    不错哦,上两个月才在群里讨论挺看好 gpui ,很适合尝试开发桌面客户端,这么快就有人动手了,加油啊~
    micolore
        25
    micolore  
       6 天前
    支持一下。
    shenlanAZ
        26
    shenlanAZ  
       6 天前
    如果能一直走开源的路的话,我觉得就不太算造轮子,应该是在填补市场空白。macOS 上唯一一个好用的是 redis-pro ,然后已经两年没更新了(而且 app store 版还不是作者本人发布的)。我现在都在用官方的客户端了( redis insight )虽然不是特别好用 只是官方出品有质量保证。加油做吧,支持一下!
    treexie
        27
    treexie  
    OP
       6 天前
    @shenlanAZ 对的,希望能做得更好,不再只是轮子。
    dreamk
        28
    dreamk  
       6 天前
    @shenlanAZ 我用的 redis 官方之前 qt 写的 RESP.app ,但下架了,在 app store 已购项目里还能找到下载
    lepig
        29
    lepig  
       6 天前
    下载 试用一下。 楼主太牛了,毅力惊人
    lepig
        30
    lepig  
       6 天前
    楼主学习一门新的语言,是不是先看一下基础语法。然后直接做一个自己感兴趣的小工具来入门的吗? 能否具体讲讲
    treexie
        31
    treexie  
    OP
       6 天前   1
    @lepig 是的,基本都是以下的模式:
    1 、找一本书看看基础语法
    2 、了解该语言的热门模块、项目(一般会去阅读一下简单的模块的代码)
    3 、找一下自己感兴趣的方向去写个小工具(一般什么工具都有人写了,所以这一步基本就是造轮子)
    jdz
        32
    jdz  
       6 天前
    牛逼
    ala2008
        33
    ala2008  
       6 天前
    看了 op 的 github ,真能折腾啊,佩服
    iorilu
        34
    iorilu  
       6 天前
    可以, 对 gpui 开发 gui 也有兴趣

    rust 确实潜力大, 虽然难入门, 但有 AI 协助, 还是能搞一些开发的, 关键三方高手很多都在发力
    miniliuke
        35
    miniliuke  
       6 天前
    gpui 是不是比较耗 gpu 啊,毕竟不停绘画
    treexie
        36
    treexie  
    OP
       5 天前
    @miniliuke 是会使用到 gpu ,不过也还好,毕竟看 redis 的数据也不是动画。
    wdmx007
        37
    wdmx007  
       5 天前
    启动很快!另外:可以连接 Redis 集群吗??
    wdmx007
        38
    wdmx007  
       5 天前
    @wdmx007 试了一下,随便输入一个 IP+端口就行了。
    treexie
        39
    treexie  
    OP
       5 天前   1
    @wdmx007 是的,只要配置单个 ip 就可以,会自动判断是什么模式,如果 sentinel 接多个 master ,那就要自己指定一下 master name 了。
    youyouzi
        40
    youyouzi  
       5 天前
    非常不错,我也看好 rust ,之前看论坛讨论说输入法提示,我也整了一个,挺好用。顺便接了大模型划词翻译功能,在公司内部分享了一下,反馈还行。
    已经 star 了,返璞归真的简洁,好评!
    sworld233
        41
    sworld233  
       5 天前
    gpui 好耶
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2782 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 08:18 PVG 16:18 LAX 00:18 JFK 03:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86