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

为什么再造一个 Redis GUI?
- 需要一个“轻、快、可带走”的工具:不臃肿、少依赖、跨平台。
- 覆盖日常 80% 的操作:看键、改值、查 TTL、跑几条命令、看下 INFO/DBSIZE 就够了。
- 对开发与测试场景友好:配置记忆、快捷键、JSON 友好显示与复制。
因此有了 Redis Viewer:基于 Python + PyQt6,单文件主程序,易于二次开发与打包分发。
下载地址
特性总览
- 连接
- 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 tool和 Chrome插件-强制开启复制-护眼模式-网页乱码设置编码
乖猫记账,AI智能分类的最佳聊天无广告记账App。
Elasticsearch可视化客户端工具
1266

被折叠的 条评论
为什么被折叠?



