用 PyQt6 打造轻量级 Redis 可视化客户端

部署运行你感兴趣的模型镜像

一个简单、跨平台、几乎零学习成本的 Redis 桌面客户端。支持连接配置、TLS/ACL、按模式与类型扫描键、常见数据结构读写、命令控制台、结果 JSON/树形展示与复制、主题切换与会话持久化。

screenshot

为什么再造一个 Redis GUI?

  • 需要一个“轻、快、可带走”的工具:不臃肿、少依赖、跨平台。
  • 覆盖日常 80% 的操作:看键、改值、查 TTL、跑几条命令、看下 INFO/DBSIZE 就够了。
  • 对开发与测试场景友好:配置记忆、快捷键、JSON 友好显示与复制。

因此有了 Redis Viewer:基于 Python + PyQt6,单文件主程序,易于二次开发与打包分发。

下载地址

RedisViewer.exe


特性总览

  • 连接
    • Host/Port/DB 选择
    • SSL/TLS,支持证书校验开关
    • ACL 用户名/密码认证
    • 一键“Test”连通性验证
  • 键浏览
    • 支持模式扫描(pattern)、类型过滤、分页(游标)
    • 列表内联过滤、右键菜单(打开/复制/TTL/Expire/删除)
  • 键编辑
    • 支持 string/hash/list/set/zset 常见类型
    • 读取、写入、删除、TTL、Expire
    • 内置“格式化 JSON”
  • 命令控制台
    • 快速操作(INFO、DBSIZE、CLIENT LIST 等)
    • 自定义命令执行(Ctrl+Enter)
  • 结果展示
    • JSON 文本视图与树形视图切换
    • 支持复制完整 JSON 或仅值,树形选择复制
  • 会话持久化与主题
    • 连接配置、最后的扫描模式、主题保存到 ~/.redis_viewer_config.json
    • System/Light/Dark 主题,适配 HiDPI

技术选型与整体结构

  • Python 3.x
  • PyQt6:跨平台桌面 UI
  • redis-py:与 Redis 通信

代码采用“业务逻辑层 + 展示层”分层:

  • SimpleRedisClient(业务逻辑)
    • 负责连接初始化、异常统一、数据读取/写入、SCAN 分页、命令执行
    • 统一将 Redis bytes 递归转换为 str,展示层无需关心编码
  • RedisViewer(UI)
    • 构建连接面板、标签页(Keys/Key Editor/Console/Server)
    • 结果区 JSON/Tree 双模式与复制逻辑
    • 会话持久化、主题管理、快捷键与交互细节

关键实现细节

1) SSL/TLS 与 redis-py 兼容性

不同版本 redis-py/连接类对 SSL 参数支持不完全一致。为避免“类型错误”导致的启动失败,初始化连接池时做了多轮回退:

  • 优先尝试现代参数组合(ssl、ssl_context、ssl_cert_reqs、username 等)
  • 捕获 TypeError 时,按序移除“不被该版本支持的参数”重试
  • 如需,回退到 legacy SSLConnection 连接类

这样可以在新版/旧版 redis-py 与不同 TLS 场景下都尽可能成功建立连接,同时允许关闭证书校验以便开发测试。

2) SCAN 分页与类型过滤

  • 首选使用服务端支持的 SCAN _type 参数进行类型过滤
  • 如果目标 Redis 版本不支持 _type 参数,则自动退化为“先扫描后 TYPE 过滤”的兼容路径
  • 提供 scan_with_cursor(pattern, type_filter, count, cursor) 便于“下一页”分页

3) 常见数据结构的读写策略

  • string:原样读取,写入支持纯文本或 JSON 文本
  • hash/list/set:约定用 JSON 输入(hash 为对象,list/set 为数组),写入时对嵌套结构进行 json.dumps 后保存为字符串
  • zset:接受两种 JSON 形态
    • 对象数组:[{“member”: any, “score”: number}, …]
    • 二元组数组:[[member, score], …]
  • stream:示例读取 XRANGE 的少量条目

统一的 _b2s 转换与 JSON 友好策略,让结果区既能 JSON 格式化,也能树形逐项查看。

4) 结果展示与复制体验

  • JSON 文本/树形视图双模式,与一键复制完整 JSON、仅值两种动作
  • 树形视图支持选中项复制“key: value”,并提供右键菜单与快捷键
  • 复制状态反馈到状态栏,方便确认

5) 主题与可用性

  • 使用 Fusion 风格 + 自定义调色板,提供 System/Light/Dark 三套主题
  • 开启 HiDPI 支持与 Windows Segoe UI 默认字体
  • 常用操作有明确快捷键:
    • F5 扫描、F6 下一页
    • F9 Get,Del 删除,Ctrl+S Set/Update
    • Ctrl+T TTL,Ctrl+E Expire,Ctrl+Shift+F 格式化 JSON
    • Ctrl+Enter 在控制台执行命令

6) 会话持久化

  • 将连接配置、当前连接名、扫描模式、主题写入 ~/.redis_viewer_config.json
  • 注意:为便捷起见,密码以明文保存,仅建议在本地开发测试环境使用

界面与交互一览

  • Connection 分组:
    • 管理多连接(保存/删除),支持 TLS 与证书校验开关,ACL 用户/密码
    • 一键测试连接,INFO 关键字段回显
  • Keys 标签:
    • pattern + type + count 扫描,Next 翻页,列表内联过滤
    • 右键菜单:打开、复制 Key、TTL、快速 Expire 3600、删除
  • Key Editor 标签:
    • 选择类型,读取与编辑值
    • JSON 格式化辅助,用于复杂结构
  • Command Console 标签:
    • 自定义命令输入,Ctrl+Enter 执行
    • Server 标签还有常用命令的“快捷树”,双击可预加载到控制台
  • Results 面板:
    • 可切换到 Tree View 按层级查看复杂结构,支持复制与展开

安装与运行

  • 从 PyPI 安装并运行:
pip install redis-viewer
redis-viewer
  • 从源码运行:
pip install PyQt6 redis
python redis_gui.py

常见问题(FAQ)

  • 连接失败排查
    • 核对 Host/Port/DB 与 ACL 用户/密码
    • 使用“Test”查看 INFO 是否返回
    • TLS 场景中可暂时关闭“Verify SSL Certificate”验证以区分证书问题
    • 云厂商 Redis 可能需要特定网络/白名单配置
  • SCAN 结果很慢/不稳定
    • count 是“期望返回量”,不是严格页大小,建议逐步增减寻找合适值
    • pattern 避免无谓的全量匹配(如前缀限定)
  • JSON 格式化失败
    • 确认值是否合法 JSON;非 JSON 文本会提示“Not valid JSON.”
  • 中文/编码
    • 已做 bytes→utf-8 转换,极端情况会以替换字符显示不可解码字节
  • 权限不足
    • 某些命令(如 CONFIG GET)需要更高权限

安全建议

  • 生产环境避免在磁盘保存明文密码,可考虑:环境变量、系统凭据库、只读账户、最小权限。
  • 使用 TLS 并开启证书校验以防中间人攻击。

实用小工具

App Store 截图生成器应用图标生成器在线图片压缩utc timestamp, ctf toolChrome插件-强制开启复制-护眼模式-网页乱码设置编码
乖猫记账,AI智能分类的最佳聊天无广告记账App。
Elasticsearch可视化客户端工具

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@井九

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值