33 lines
1.4 KiB
Markdown
33 lines
1.4 KiB
Markdown
# redis 模块测试报告
|
|
|
|
## 测试环境管理
|
|
- **自动环境检查 (TestMain)**: 测试启动时会自动检查 `localhost:6379` 的 Redis 服务。如果不可用,将打印跳过信息并退出,避免测试在无环境时报错。
|
|
|
|
## 测试场景
|
|
1. **基础操作 (TestBase)**:
|
|
- 验证 `GET`, `SET`, `DEL`, `EXISTS`, `GETSET` 等基本命令。
|
|
- 验证 `EXPIRE` 自动过期功能(等待 1.1s 确保失效)。
|
|
- 验证结构体自动序列化与反序列化。
|
|
- 验证 `MSET`, `MGET` 批量操作。
|
|
2. **分布式 ID (TestIdMaker)**:
|
|
- 验证 `NewIdMaker` 结合 Redis 生成唯一 ID 的能力。
|
|
- 验证生成 200 个 ID 无碰撞。
|
|
- 验证 `GetForMysql` 和 `GetForPostgreSQL` 的长度与格式。
|
|
3. **泛型支持 (TestGenerics)**:
|
|
- 验证 `To[T]` 泛型函数对结果的反序列化。
|
|
4. **发布订阅 (TestSub)**:
|
|
- 验证 `Subscribe`, `Unsubscribe`, `PUBLISH` 功能。
|
|
- 验证并发订阅与取消订阅的稳定性。
|
|
|
|
## Benchmark 结果
|
|
```bash
|
|
goos: darwin
|
|
goarch: amd64
|
|
pkg: apigo.cc/go/redis
|
|
cpu: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
|
|
BenchmarkGetSet-16 3766 267470 ns/op
|
|
BenchmarkIDMaker-16 397779 3062 ns/op
|
|
```
|
|
- `BenchmarkGetSet`: 每次 GET+SET 耗时约 267微秒。
|
|
- `BenchmarkIDMaker`: 每次获取分布式 ID 耗时约 3.0微秒(预取机制效率显著)。
|