产品概述
MyCache 是一款完全自主研发的类 Redis 内存缓存系统,采用 Go 语言编写,完整支持 Redis RESP 协议,兼容标准 Redis 命令和客户端。系统支持 String、Hash、List、Set、Sorted Set 五种数据类型,提供键过期、RDB 持久化、多数据库、密码认证等企业级特性。
MyCache 定位于缓存加速、会话存储、实时数据、分布式锁、消息队列等场景,提供与 Redis 完全兼容的接口,用户可以使用任何 Redis 客户端(redis-cli、Jedis、go-redis、Another Redis Desktop Manager 等)直接连接使用。
技术架构
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ redis-cli │ │ Go Redis │ │ Browser │
│ Client │ │ Client │ │ (Web UI) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ RESP/TCP │ RESP/TCP │ HTTP
▼ ▼ ▼
┌─────────────────────────────────────────────────────┐
│ TCP Server (端口 6333) │
│ RESP 协议解析 + 命令路由 │
└────────────────────┬────────────────────────────────┘
│
┌────────────────────▼────────────────────────────────┐
│ Cache Engine │
│ String | Hash | List | Set | Sorted Set │
└────────────────────┬────────────────────────────────┘
│
┌──────────┼──────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ TTL │ │ RDB │ │ Stats │
│ Manager │ │ Persist │ │ Counter │
└─────────┘ └─────────┘ └─────────┘
核心特性
📦 5 种数据类型
完整支持 String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Sorted Set(有序集合),覆盖所有常见缓存场景。
🔄 RESP 协议兼容
完整实现 Redis Serialization Protocol (RESP),任何标准 Redis 客户端都可以直接连接,无需修改代码。
⏰ 键过期管理
支持 EXPIRE、TTL、PEXPIRE、PTTL 等过期命令,自动清理过期键,支持持久化后恢复过期时间。
💾 RDB 持久化
支持 SAVE 同步保存、BGSAVE 后台保存,自动定时保存,启动时自动从 dump.rdb 恢复数据,断电不丢失。
🗄️ 多数据库
支持 16 个逻辑数据库(0-15),SELECT 命令切换数据库,每个连接独立维护数据库上下文,数据完全隔离。
🔒 密码认证
支持 AUTH 命令进行密码认证,保护数据安全,可配置密码强度,防止未授权访问。
🖥️ Web 管理界面
内置 Web 管理界面,支持登录认证、仪表盘统计、键浏览、数据查看与修改、命令执行、一键插入示例数据。
⚡ 高并发处理
基于 Go 协程的高并发处理能力,支持 10000+ QPS,单命令响应时间 <1ms,高效的内存管理和并发控制。
📊 统计监控
内置统计信息收集,包括命令计数、命中率、内存使用、连接数等指标,方便监控和性能调优。
🔐 访问控制
支持连接数限制、内存限制保护、优雅关闭机制,确保系统稳定运行,防止资源耗尽。
⚙️ 灵活配置
config.ini 配置文件,支持端口、内存限制、持久化策略、密码等配置项,默认值合理,开箱即用。
🌐 多客户端支持
兼容 redis-cli、Jedis、go-redis、Python redis、Node.js redis 等所有主流 Redis 客户端库。
支持命令
字符串命令
| 命令 | 说明 | 示例 |
|---|---|---|
| SET | 设置键值 | SET name "张三" |
| GET | 获取值 | GET name |
| DEL | 删除键 | DEL name |
| EXISTS | 检查是否存在 | EXISTS name |
| INCR / DECR | 自增 / 自减 | INCR counter |
| INCRBY / DECRBY | 按值自增 / 自减 | INCRBY counter 10 |
| APPEND | 追加字符串 | APPEND name "先生" |
| STRLEN | 获取字符串长度 | STRLEN name |
哈希命令
| 命令 | 说明 | 示例 |
|---|---|---|
| HSET | 设置哈希字段 | HSET user:1 name "李四" |
| HGET | 获取哈希字段 | HGET user:1 name |
| HGETALL | 获取所有字段 | HGETALL user:1 |
| HDEL | 删除字段 | HDEL user:1 email |
| HEXISTS | 检查字段是否存在 | HEXISTS user:1 age |
| HLEN | 获取字段数量 | HLEN user:1 |
| HKEYS | 获取所有键 | HKEYS user:1 |
| HVALS | 获取所有值 | HVALS user:1 |
列表命令
| 命令 | 说明 | 示例 |
|---|---|---|
| LPUSH / RPUSH | 左边/右边插入 | LPUSH fruits "apple" |
| LPOP / RPOP | 左边/右边弹出 | LPOP fruits |
| LLEN | 获取列表长度 | LLEN fruits |
| LRANGE | 获取范围元素 | LRANGE fruits 0 -1 |
集合命令
| 命令 | 说明 | 示例 |
|---|---|---|
| SADD | 添加成员 | SADD tags "golang" "redis" |
| SMEMBERS | 查看所有成员 | SMEMBERS tags |
| SISMEMBER | 检查是否是成员 | SISMEMBER tags "redis" |
| SREM | 删除成员 | SREM tags "cache" |
| SCARD | 获取成员数量 | SCARD tags |
有序集合命令
| 命令 | 说明 | 示例 |
|---|---|---|
| ZADD | 添加成员及分数 | ZADD scores 90 "Alice" |
| ZRANGE | 按排名获取(从小到大) | ZRANGE scores 0 -1 WITHSCORES |
| ZREVRANGE | 按排名获取(从大到小) | ZREVRANGE scores 0 -1 |
| ZRANK | 获取成员排名 | ZRANK scores "Bob" |
| ZSCORE | 获取成员分数 | ZSCORE scores "Alice" |
| ZREM | 删除成员 | ZREM scores "Bob" |
| ZCARD | 获取成员数量 | ZCARD scores |
服务器命令
| 命令 | 说明 | 示例 |
|---|---|---|
| PING | 测试连接 | PING |
| AUTH | 密码认证 | AUTH mycache123 |
| SELECT | 切换数据库 | SELECT 1 |
| EXPIRE / TTL | 设置过期时间 | EXPIRE key 60 |
| KEYS | 查找键 | KEYS * |
| DBSIZE | 键数量 | DBSIZE |
| FLUSHDB | 清空当前库 | FLUSHDB |
| FLUSHALL | 清空所有库 | FLUSHALL |
| SAVE | 同步保存 RDB | SAVE |
| BGSAVE | 后台保存 RDB | BGSAVE |
快速开始
1. 配置文件
2. 启动服务
3. 使用 redis-cli
4. 使用 Go 客户端
5. 使用 Web 界面
配置说明
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| server.host | string | 0.0.0.0 | 监听地址 |
| server.port | int | 6333 | Redis 协议端口 |
| server.max_connections | int | 10000 | 最大连接数 |
| server.max_memory | int | 1024 | 最大内存(MB) |
| server.password | string | mycache123 | 连接密码 |
| web.host | string | 0.0.0.0 | Web 监听地址 |
| web.port | int | 8080 | Web 管理端口 |
| web.username | string | admin | Web 用户名 |
| web.password | string | admin123 | Web 密码 |
| persistence.enabled | bool | true | 启用自动保存 |
| persistence.save_interval | int | 300 | 自动保存间隔(秒) |
| persistence.rdb_file | string | dump.rdb | RDB 文件名 |
立即下载
选择合适的版本开始使用 MyCache
📦 下载完整包版本: v1.0.0 | 平台: Windows/Linux amd64
包含: mycache.exe (服务器) + config.ini (配置文件) + Web 管理界面