MyCache

Redis 兼容内存缓存系统 · RESP 协议 · RDB 持久化

10000+
QPS
5 种
数据类型
16 个
逻辑数据库
<1ms
响应时间

产品概述

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 │
    └─────────┘ └─────────┘ └─────────┘
客户端层
redis-cli Go Redis 客户端 Python Redis 客户端 Web 管理界面
网络层
TCP Server RESP 协议解析 连接管理 密码认证
缓存引擎
String 操作 Hash 操作 List 操作 Set 操作 Sorted Set 操作
核心模块
TTL 管理 RDB 持久化 多数据库 (0-15) 统计收集

核心特性

📦 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同步保存 RDBSAVE
BGSAVE后台保存 RDBBGSAVE

快速开始

1. 配置文件

# config.ini [server] host = 0.0.0.0 port = 6333 max_connections = 10000 max_memory = 1024 password = mycache123 [web] host = 0.0.0.0 port = 8080 username = admin password = admin123 [persistence] enabled = true save_interval = 300 rdb_file = dump.rdb [log] level = info file = mycache.log

2. 启动服务

# 编译 go build -o mycache.exe ./cmd/server # 运行 .\mycache.exe

3. 使用 redis-cli

# 连接到 MyCache(注意:端口是 6333!) redis-cli -h localhost -p 6333 -a mycache123 # 设置数据 SET key1 "value1" SET key2 "value2" # 获取数据 GET key1 # 设置过期时间 EXPIRE key2 60 # 查看剩余时间 TTL key2 # 删除数据 DEL key1

4. 使用 Go 客户端

// 安装 Redis 客户端库 go get github.com/go-redis/redis/v8 // 示例代码 package main import ( "fmt" "github.com/go-redis/redis/v8" ) func main() { rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6333", Password: "mycache123", DB: 0, }) rdb.Set(rdb.Context(), "hello", "world", 0) val, _ := rdb.Get(rdb.Context(), "hello").Result() fmt.Println("hello", val) }

5. 使用 Web 界面

# 访问 Web 管理界面 http://localhost:8080 # 登录凭据 用户名: admin 密码: admin123 # 功能 - 仪表板:查看统计信息(命令数、命中率、内存使用等) - 键列表:浏览所有键,支持删除操作 - 键详情:点击键名查看详细数据,支持修改和删除 - 操作示例:快速插入各种类型的示例数据

配置说明

配置项类型默认值说明
server.hoststring0.0.0.0监听地址
server.portint6333Redis 协议端口
server.max_connectionsint10000最大连接数
server.max_memoryint1024最大内存(MB)
server.passwordstringmycache123连接密码
web.hoststring0.0.0.0Web 监听地址
web.portint8080Web 管理端口
web.usernamestringadminWeb 用户名
web.passwordstringadmin123Web 密码
persistence.enabledbooltrue启用自动保存
persistence.save_intervalint300自动保存间隔(秒)
persistence.rdb_filestringdump.rdbRDB 文件名

立即下载

选择合适的版本开始使用 MyCache

📦 下载完整包

版本: v1.0.0 | 平台: Windows/Linux amd64

包含: mycache.exe (服务器) + config.ini (配置文件) + Web 管理界面