Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
f2b3d83
docs: 官网暖色主题与首页 Hero/导航视觉优化
hepengju Jul 4, 2026
a09f41a
docs: 根路径按浏览器语言跳转中文首页
hepengju Jul 4, 2026
64340fa
docs: 文档页顶部也隐藏导航分割线
hepengju Jul 4, 2026
3813898
Merge pull request #129 from hepengju/dev
hepengju Jul 4, 2026
836d793
docs: 修复首页下载下拉遮挡并调整区块间距
hepengju Jul 4, 2026
a302145
Merge pull request #130 from hepengju/dev
hepengju Jul 4, 2026
ecbe2ad
docs: 首页与文档页统一全页环境光与网格背景
hepengju Jul 4, 2026
baf6dd7
主界面截图更新(收藏和数据库选择框等细节展示)
hepengju Jul 4, 2026
1b2a932
优化 README 与关于页介绍文案
hepengju Jul 4, 2026
59406d1
Merge pull request #131 from hepengju/dev
hepengju Jul 4, 2026
93efd84
导出数据的预览键名高度调整,避免出现滚动条
hepengju Jul 4, 2026
abb2cd7
导入连接时新分组文件夹默认折叠
hepengju Jul 4, 2026
30ae396
优化 Stream 值表格 ID 展示与查看操作
hepengju Jul 4, 2026
40b199f
新增 field_get,编辑 hash/list 后单行刷新表格
hepengju Jul 4, 2026
1c1e1eb
新增 get_field_as_command,支持表格单行复制为 Redis 命令
hepengju Jul 4, 2026
259489e
值页表格单行复制为命令,键菜单新增复制值
hepengju Jul 4, 2026
785e595
值页表格行悬停操作区,支持单行刷新与字段复制
hepengju Jul 4, 2026
f03da1c
编辑面板单行刷新并同步表格,刷新成功提示
hepengju Jul 4, 2026
0737dfb
值页表格恢复固定操作列,清理悬停逻辑与冗余代码
hepengju Jul 5, 2026
574feeb
值页底部工具栏新增复制为命令与刷新,快捷键仅编辑器可见
hepengju Jul 5, 2026
1bf0fdb
只读模式隐藏新增键 append,注释 input-group 背景覆盖
hepengju Jul 5, 2026
9228a68
键搜索支持完全匹配 EXISTS 与 glob 模糊扫描
hepengju Jul 5, 2026
d651ef5
TODO列表更新
hepengju Jul 5, 2026
e61669a
fix: 修复图表数据更新后不自动重绘 #132
hepengju Jul 6, 2026
4b1eba2
v4.2.1 更新日志
hepengju Jul 6, 2026
ec5468a
v4.2.1 latest.json
hepengju Jul 6, 2026
639243c
Merge pull request #133 from hepengju/dev
hepengju Jul 6, 2026
65a1eaa
官网 Windows 下载增加微软应用商店入口,文档 dev 端口改为 33333
hepengju Jul 7, 2026
3fc399e
feat: 终端输出对齐 redis-cli TTY/Raw/JSON/CSV 格式
hepengju Jul 7, 2026
f5e1ade
fix: 大 STRING 值超 1MB 预览加载,修复 bitmap 大 offset 查看崩溃 #136
hepengju Jul 8, 2026
9f772f4
feat: 支持键值空串保存并修复 FieldAdd 校验
hepengju Jul 9, 2026
a3c2996
feat: 恢复 Binary 编码格式(setbit 等场景)
hepengju Jul 9, 2026
302538b
feat: String 键在 MEMORY USAGE 不可用时显示估算内存
hepengju Jul 9, 2026
fd49473
chore: 升级 npm 与 Rust 依赖
hepengju Jul 9, 2026
bfdb238
refactor: 移除值页与字段编辑底部复制为命令图标
hepengju Jul 9, 2026
94e7eb0
refactor: 集群槽位与节点入口移至值页扩展菜单
hepengju Jul 9, 2026
3c1d4b5
v4.3.0 更新日志
hepengju Jul 10, 2026
f0cb783
v4.3.0 latest.json
hepengju Jul 10, 2026
a251960
Merge pull request #138 from hepengju/dev
hepengju Jul 10, 2026
4d83523
feat: 字段扫描支持 pattern/exact 与前端循环
hepengju Jul 11, 2026
272e16c
refactor: fieldScan 类型扩展参数统一放入 FiledScanMeta
hepengju Jul 11, 2026
84515ef
style: 键 TTL 图标前添加分隔符
hepengju Jul 11, 2026
aa92efb
feat: Hash 所有键(HKEYS)及值页弹框组件抽取
hepengju Jul 11, 2026
9f0ac30
样式优化:键值的Header,导出的扩展按钮
hepengju Jul 11, 2026
198f41b
perf: fieldScan 续扫跳过 TYPE/TTL/MEMORY/HLEN 元数据
hepengju Jul 11, 2026
64b7b0e
feat: Hash HTTL 可选开关,关闭时列表不拉取、保存保留过期
hepengju Jul 11, 2026
d679c5a
feat: Hash 所有值(HVALS)及弹框复用
hepengju Jul 11, 2026
510e203
feat: Hash 行菜单增加复制哈希键
hepengju Jul 11, 2026
0bd3728
chore: 移除 HTTL 按钮提示文案
hepengju Jul 11, 2026
c46b865
feat: 值表值列可排序并按键类型设置默认排序
hepengju Jul 11, 2026
95f2299
refactor: List/Stream 复用表格扫描输入框与进度环
hepengju Jul 11, 2026
4443600
字段扫描默认值改为100
hepengju Jul 11, 2026
d27e03f
键值页: List类型新增索引范围、升降序、LPOP/RROP功能
hepengju Jul 11, 2026
3458b88
docs: 移除.VPHero多余裁剪,修复Safari下拉菜单遮挡
hepengju Jul 11, 2026
acc9e57
docs: 移除.VPHero多余裁剪,修复Safari下拉菜单遮挡
hepengju Jul 11, 2026
133614c
feat: Stream 支持升序/降序扫描,范围输入样式与 List 对齐
hepengju Jul 11, 2026
99363b1
feat: 统一 List/Set/ZSet 弹出操作为 field_pop (#125)
hepengju Jul 11, 2026
4bf5096
fix: 补充 TypeScript 类型定义中的 includeFieldTtl 字段 (#125)
hepengju Jul 11, 2026
ff9e63a
扩展命令的后续计划考虑
hepengju Jul 12, 2026
0120e1a
refactor(setting): 设置弹框改为左侧标签页布局
hepengju Jul 12, 2026
d241d8b
refactor(ui): 弹框逻辑内聚到组件内部
hepengju Jul 12, 2026
2d27bc0
feat(setting): 新增安全阈值和预览字节配置
hepengju Jul 12, 2026
31bc52d
dbSelect的稍微宽一点,适配不同字体
hepengju Jul 12, 2026
b27c861
feat(setting): 设置页面标签优化
hepengju Jul 12, 2026
e003556
feat: 设置页面恢复上下卡片布局,添加安全阈值和预览字节配置
hepengju Jul 12, 2026
fc994f0
设置的小细节手动修正
hepengju Jul 12, 2026
8367d8f
refactor: 提取默认设置和连接兼容逻辑到 utils 模块
hepengju Jul 12, 2026
d270862
Merge pull request #139 from hepengju/master
hepengju Jul 12, 2026
291e70c
细节样式: StreamID宽度,设置的表格单行高度
hepengju Jul 12, 2026
70f66af
Merge branch 'dev' of github.com:hepengju/redis-me into dev
hepengju Jul 12, 2026
e105ad8
提取命令帮助为独立组件 CommandHelp 并在 RedisValue 中复用
hepengju Jul 12, 2026
e69ecd4
RedisValue右键菜单文案优化:复制哈希键→复制键/字段值→复制值;新增复制ID和复制分数;Zset表格列顺序调整;英文翻译简化
hepengju Jul 13, 2026
23a1d1b
RedisValue表格切换类型时通过key强制重新挂载,确保default-sort默认排序正确生效
hepengju Jul 13, 2026
149da8c
刷新键的提示优化
hepengju Jul 13, 2026
e82ada9
重置窗口的提示优化
hepengju Jul 13, 2026
fb8d9f5
feat: ZSet 行扩展菜单新增查看索引功能(ZRANK/ZREVRANK)
hepengju Jul 13, 2026
948a4ab
feat: List类型新增独立索引列及复制索引菜单项
hepengju Jul 13, 2026
4656266
feat: List索引范围查询支持负数索引,超出范围直接返回空数组
hepengju Jul 14, 2026
00ad633
feat: ZSet新增TopN排名查询功能
hepengju Jul 14, 2026
611bfc9
fix: 修复 meCommands 错误重复弹框
hepengju Jul 14, 2026
d733bd6
fix: 修复键区长名称布局错位
hepengju Jul 15, 2026
e593372
fix: Stream 行菜单复制ID与复制值顺序与表格列一致
hepengju Jul 15, 2026
dfe5409
chore: 暂时隐藏社交菜单入口以减小打包体积
hepengju Jul 15, 2026
f46a029
feat: 键值页扩展菜单新增对象自省(OBJECT)
hepengju Jul 16, 2026
5b65613
feat: 命令帮助表格支持跳转各官网命令文档
hepengju Jul 16, 2026
698fdac
v4.4.0 更新日志
hepengju Jul 17, 2026
b18ba9f
v4.4.0 lastest.json
hepengju Jul 17, 2026
a8f9722
Merge pull request #140 from hepengju/dev
hepengju Jul 17, 2026
9e8b7fb
test: vite-plus prerelease 0.0.0-commit.9855245a
wan9chi Jul 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# vite-plus preview build registry bridge (auto-added by vp)
registry=https://registry-bridge.viteplus.dev/
33 changes: 14 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,25 @@
<div align="center">
<a href="https://github.com/hepengju/redis-me/"><img src="docs/public/images/logo.svg" width="100"/></a>
</div>
<h1 align="center">RedisME</h1>
<h4 align="center">
English
| <a href="/README_zh.md">简体中文</a>
| <a href="/docs/en/guide/intro/screenshots.md">Screenshots</a>
</h4>
<div align="center">

# RedisME

### A modern, lightweight, cross-platform Redis desktop manager

English | <a href="/README_zh.md">简体中文</a> | <a href="/docs/en/guide/intro/screenshots.md">Screenshots</a>

[![License](https://img.shields.io/github/license/hepengju/redis-me)](https://github.com/hepengju/redis-me/blob/main/LICENSE)
[![GitHub release](https://img.shields.io/github/release/hepengju/redis-me)](https://github.com/hepengju/redis-me/releases)
![GitHub All Releases](https://img.shields.io/github/downloads/hepengju/redis-me/total)

<strong>RedisME is a modern lightweight cross-platform Redis desktop manager </strong>
[![GitHub All Releases](https://img.shields.io/github/downloads/hepengju/redis-me/total)](https://github.com/hepengju/redis-me/releases)

</div>

![empty.png](docs/public/images/empty.png)
![light.png](docs/public/images/light.png)
![dark.png](docs/public/images/dark.png)
![Connection list empty state](docs/public/images/empty.png)
![Light theme](docs/public/images/light.png)
![Dark theme](docs/public/images/dark.png)

## Features

- Super Lightweight: Based on Webview2, no embedded browser (Thanks to [Tauri](https://tauri.app))
- Pretty UI: Provides light/dark themes(Thanks to [ElementPlus](https://element-plus.org), [CodeMirror](https://codemirror.net/), [VueWebTerminal](https://tzfun.github.io/vue-web-terminal/))
- Super Lightweight: Based on Webview, no embedded browser (Thanks to [Tauri](https://tauri.app))
- Pretty UI: Provides light/dark themes (Thanks to [ElementPlus](https://element-plus.org), [CodeMirror](https://codemirror.net/), [VueWebTerminal](https://tzfun.github.io/vue-web-terminal/))
- Cross-platform: Supports Windows/Mac/Linux
- Multi-language: English, Chinese, more languages coming soon
- Rich functionality: info, value, terminal, memory analysis, slow logs, command monitoring, pub/sub etc
Expand Down Expand Up @@ -58,7 +53,7 @@ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
curl -fsSL https://vite.plus | bash

# clone
git clone https://github.com/hepengju/redis-me.git --depth=1
git clone https://github.com/hepengju/redis-me.git

# install package.json and start dev
vp install
Expand All @@ -67,6 +62,6 @@ vp run tauri dev

## WeChat Official Account

Regularly share the special features and update logs of RedisME, as well as other technical issues and solutions.
Regularly shares RedisME special features and update logs, as well as other technical issues and solutions.

<img src="src/assets/images/wechat.png" alt="wechat" width="400" />
38 changes: 17 additions & 21 deletions README_zh.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,42 @@
<div align="center">
<a href="https://gitee.com/hepengju/redis-me/"><img src="docs/public/images/logo.svg" width="120"/></a>
</div>
<h1 align="center">RedisME</h1>
<h4 align="center">
<a href="/README.md">English</a>
| 简体中文
| <a href="/docs/zh/guide/intro/screenshots.md">更多截图</a>
</h4>
<div align="center">

# RedisME

### 一个现代、轻量、跨平台的 Redis 桌面客户端

<a href="/README.md">English</a> | 简体中文 | <a href="/docs/zh/guide/intro/screenshots.md">更多截图</a>

[![License](https://img.shields.io/github/license/hepengju/redis-me)](https://github.com/hepengju/redis-me/blob/main/LICENSE)
[![GitHub release](https://img.shields.io/github/release/hepengju/redis-me)](https://github.com/hepengju/redis-me/releases)
![GitHub All Releases](https://img.shields.io/github/downloads/hepengju/redis-me/total)

<strong>一个现代、轻量、跨平台的Redis桌面客户端</strong>
[![GitHub All Releases](https://img.shields.io/github/downloads/hepengju/redis-me/total)](https://github.com/hepengju/redis-me/releases)

</div>

![empty.png](docs/public/images/empty-zh.png)
![light.png](docs/public/images/light-zh.png)
![dark.png](docs/public/images/dark-zh.png)
![连接列表空状态](docs/public/images/empty-zh.png)
![浅色主题](docs/public/images/light-zh.png)
![深色主题](docs/public/images/dark-zh.png)

## 功能特性
## 功能

- 极度轻量:基于Webview2,无内嵌浏览器,安装包小于10M(感谢 [Tauri](https://tauri.app/zh-cn))
- 极度轻量:基于 Webview,无内嵌浏览器,安装包小于 10M(感谢 [Tauri](https://tauri.app/zh-cn))
- 界面美观:提供浅色/深色主题(感谢 [ElementPlus](https://cn.element-plus.org/zh-CN/), [CodeMirror](https://codemirror.net/), [VueWebTerminal](https://tzfun.github.io/vue-web-terminal/zh/))
- 跨平台支持:支持Window/Mac/Linux
- 跨平台支持:支持 Windows/Mac/Linux
- 多语言支持:英文、中文,敬请期待其他语言
- 功能丰富:支持信息、键值、终端、内存分析、慢日志、命令监控、发布订阅等

## 特色功能

- 只读/可写模式动态切换
- 终端命令提示及详细解释
- Info 字段高亮与详细解释
- 配置字段的差异比对、详细解释、默认值参考
- 精细化的内存扫描参数配置,快速排查内存问题
- 终端执行命令,支持自动广播到集群的多节点
- 集群操作可指定节点

## 应用安装

提供Mac、Windows和Linux安装包,可免费下载 [Github](https://github.com/hepengju/redis-me/releases)、[Gitee](https://gitee.com/hepengju/redis-me/releases)
提供 Mac、Windows 和 Linux 安装包,可免费下载 [Github](https://github.com/hepengju/redis-me/releases)、[Gitee](https://gitee.com/hepengju/redis-me/releases)

## 构建项目

Expand All @@ -57,7 +53,7 @@ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
curl -fsSL https://vite.plus | bash

# 克隆项目
git clone https://github.com/hepengju/redis-me.git --depth=1
git clone https://github.com/hepengju/redis-me.git

# 安装前端依赖,然后本地启动开发模式
vp install
Expand All @@ -66,6 +62,6 @@ vp run tauri dev

## 微信公众号

定期分享RedisME的特色功能与图文更新日志,及其他技术疑难问题和解决方案
定期分享 RedisME 的特色功能与图文更新日志,及其他技术疑难问题和解决方案

<img src="src/assets/images/wechat.png" alt="wechat" width="400" />
6 changes: 5 additions & 1 deletion docs/.vitepress/config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { defineConfig } from 'vitepress'

import { createLangRedirectScript } from './theme/lang-redirect'

/** 子路径部署时改为 `/仓库名/`(建议以 / 结尾),与 Vite `base` 一致 */
const siteBase: string = '/'

Expand All @@ -20,6 +22,8 @@ export default defineConfig({
head: [
['link', { rel: 'icon', type: 'image/svg+xml', href: siteAsset('images/logo.svg') }],
['link', { rel: 'icon', type: 'image/png', href: siteAsset('images/logo.png') }],
// 根路径:中文浏览器或已选中文 → /zh/(见 theme/lang-redirect.ts)
['script', { type: 'text/javascript' }, createLangRedirectScript(viteBase)],
],
themeConfig: {
logo: siteAsset('images/logo.svg'),
Expand Down Expand Up @@ -58,5 +62,5 @@ export default defineConfig({
// srcExclude: ['latest.json', '/zz/**'],

// Windows(Hyper-V/WSL 等)常保留 5172–5271,Vite 默认 5173 会 EACCES
vite: { server: { port: 3333, host: '127.0.0.1' }, preview: { port: 3333, host: '127.0.0.1' } },
vite: { server: { port: 33333, host: '127.0.0.1' }, preview: { port: 3333, host: '127.0.0.1' } },
})
6 changes: 3 additions & 3 deletions docs/.vitepress/theme/components/AppPreview.vue
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const imgSrc = computed(() => {
<style scoped>
.preview-wrapper {
margin-top: -30px;
padding: 0 24px 24px;
padding: 0 24px 32px;
text-align: center;
display: flex;
flex-direction: row;
Expand All @@ -39,13 +39,13 @@ const imgSrc = computed(() => {

@media (min-width: 640px) {
.preview-wrapper {
padding: 0 48px 24px;
padding: 0 48px 32px;
}
}

@media (min-width: 960px) {
.preview-wrapper {
padding: 0 64px 24px;
padding: 0 64px 32px;
}

.preview-inner {
Expand Down
27 changes: 26 additions & 1 deletion docs/.vitepress/theme/components/HeroActions.vue
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ const isZh = computed(() => lang.value.startsWith('zh'))
const viewText = computed(() => (isZh.value ? '进入Github' : 'View on GitHub'))
const gitHost = computed(() => (isZh.value ? 'gitee' : 'github'))

/** 与安装帮助文档一致 */
const MS_STORE_URL = 'https://apps.microsoft.com/detail/9NG9X1RCMW4P'

/** 客户端检测 OS;SSR 与 Android 等未知平台默认 Windows */
const detectedOs = ref('Windows')

Expand Down Expand Up @@ -70,6 +73,7 @@ const downloadMenu = computed(() => {
{
os: 'Windows',
icon: Windows,
leadItem: { text: isZh.value ? '微软应用商店' : 'Microsoft Store', link: MS_STORE_URL },
items: [
winItem('x64', 'exe', `RedisME_${version}_x64-setup.exe`),
winItem('x64', 'zip', `RedisME_${version}_portable_x64.zip`),
Expand Down Expand Up @@ -129,6 +133,15 @@ const otherPlatformsLabel = computed(() =>
<span>{{ currentOsGroup.os }}</span>
</a>
<ul class="dropdown-menu">
<li
v-if="currentOsGroup.leadItem"
:key="currentOsGroup.leadItem.link"
class="group-item"
style="font-size: 14px">
<a :href="currentOsGroup.leadItem.link" rel="noreferrer" target="_blank">{{
currentOsGroup.leadItem.text
}}</a>
</li>
<li
v-for="item in currentOsGroup.items"
:key="item.link"
Expand All @@ -147,6 +160,15 @@ const otherPlatformsLabel = computed(() =>
<component :is="group.icon" />
<span>{{ group.os }}</span>
</li>
<li
v-if="group.leadItem"
:key="group.leadItem.link"
class="group-item"
style="font-size: 14px">
<a :href="group.leadItem.link" rel="noreferrer" target="_blank">{{
group.leadItem.text
}}</a>
</li>
<li
v-for="item in group.items"
:key="item.link"
Expand Down Expand Up @@ -174,6 +196,8 @@ const otherPlatformsLabel = computed(() =>

<style scoped>
.actions {
position: relative;
z-index: 30;
display: flex;
flex-wrap: wrap;
}
Expand Down Expand Up @@ -226,6 +250,7 @@ const otherPlatformsLabel = computed(() =>

.download-action {
position: relative;
z-index: 31;
}

.split-button {
Expand Down Expand Up @@ -297,7 +322,7 @@ const otherPlatformsLabel = computed(() =>
border: 1px solid var(--vp-c-divider);
background-color: var(--vp-c-bg-soft);
box-shadow: var(--vp-shadow-2);
z-index: 10;
z-index: 100;
display: none;
}

Expand Down
12 changes: 11 additions & 1 deletion docs/.vitepress/theme/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import { inBrowser, useData } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
import { h } from 'vue'
import { h, watchEffect } from 'vue'

import AppPreview from './components/AppPreview.vue'
import HeroActions from './components/HeroActions.vue'
import { LANG_STORAGE_KEY } from './lang-redirect'

import './styles.css'

Expand All @@ -14,4 +16,12 @@ export default {
'home-hero-after': () => h(AppPreview),
})
},
setup() {
const { lang } = useData()
// 导航栏切换语言后记住偏好,下次访问根路径不再按浏览器猜测
watchEffect(() => {
if (!inBrowser) return
localStorage.setItem(LANG_STORAGE_KEY, lang.value.startsWith('zh') ? 'zh' : 'en')
})
},
}
23 changes: 23 additions & 0 deletions docs/.vitepress/theme/lang-redirect.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/** localStorage 键:用户手动切换语言或自动跳转后写入,优先于浏览器语言 */
export const LANG_STORAGE_KEY = 'redisme-docs-lang'

/** 根路径访问时按偏好 / 浏览器语言跳转中文首页(inline script,尽早执行) */
export function createLangRedirectScript(base: string): string {
const normalizedBase = base === '/' ? '/' : base.endsWith('/') ? base : `${base}/`
const zhHome = normalizedBase === '/' ? '/zh/' : `${normalizedBase}zh/`

return `(function(){try{
var k=${JSON.stringify(LANG_STORAGE_KEY)};
var base=${JSON.stringify(normalizedBase)};
var zh=${JSON.stringify(zhHome)};
var p=location.pathname;
if(p.endsWith('/index.html'))p=p.slice(0,-11)||'/';
var root=base==='/'?'/':base.replace(/\\/$/,'');
if(p!==root&&p!==root+'/')return;
var s=localStorage.getItem(k);
if(s==='zh'){location.replace(zh);return}
if(s==='en')return;
var l=(navigator.language||navigator.userLanguage||'').toLowerCase();
if(l.startsWith('zh'))location.replace(zh)
}catch(e){}})();`
}
Loading