124 lines
6.9 KiB
Markdown
124 lines
6.9 KiB
Markdown
# CHANGELOG - redis
|
||
|
||
## v1.5.10 (2026-06-22)
|
||
- **依赖更新**:
|
||
- 升级依赖 `id` 至 `v1.5.6`。
|
||
|
||
## v1.5.9 (2026-06-21)
|
||
- **依赖更新**:
|
||
- 升级依赖 `id` 至 `v1.5.5`(同步修复旧版本 ID 未打乱的 Bug)。
|
||
|
||
## v1.5.8 (2026-06-21)
|
||
- **安全模式优化**: `checkSafe` 从写命令全量拦截改为仅拦截危险命令(`FLUSHDB`/`FLUSHALL`),常规写操作(HSET/HDEL/SET/DEL 等)在安全模式下不再受限。
|
||
- **Result.Bool() 修复**: 增加 `"OK"` 响应判断(Redis RESP Simple String),解决 SET/SETEX 等命令永远返回 `false` 的问题。
|
||
- **JS Logger 注入修复**: `getDefaultRedisForJS` 改用 `jsmod.Get(ctx, "Logger")` 替代 `ctx.Value("Logger")`,修复 jsmod Context 下 Logger 始终为 nil 导致的 panic。
|
||
|
||
## v1.5.7 (2026-06-21)
|
||
- **兼容性增强**: 对已废弃的 Redis 命令增加新协议兼容支持。
|
||
- `SETEX` → `SET key val EX sec`,`SETNX` → `SET key val NX`,`HMSET` → `HSET`,`GETSET` → `SET key val GET`,`ZREVRANGE` → `ZRANGE ... REV`。
|
||
- 新增 `compatFlags` 降级标记位,默认尝试新协议;当新协议报错时自动回退旧协议并记录标记,后续直接使用旧协议。
|
||
- **依赖更新**: 升级 `shell` 至 `v1.5.4`。
|
||
|
||
## v1.5.6 (2026-06-21)
|
||
- **JS 对齐**: 重构 JS 导出为具名函数,并引入 `jsmod.MakeError` 动态包装错误以获取调用栈。
|
||
- **依赖更新**: 升级依赖 `jsmod` 至 `v1.5.3`,`cast` 至 `v1.5.3`,`rand` 至 `v1.5.3`,`encoding` 至 `v1.5.4`,`shell` 至 `v1.5.3`,`safe` 至 `v1.5.2`,`id` 至 `v1.5.4`,`crypto` 至 `v1.5.3`,`file` 至 `v1.5.5`,`config` 至 `v1.5.3`,`log` 至 `v1.5.8`。
|
||
|
||
## v1.5.5 (2026-06-20)
|
||
- **JS 导出重构**:
|
||
- 移除 `js_export.go` 中冗余的独立命令快捷函数(SET, GET, DEL, EXISTS, EXPIRE, PUBLISH),统一通过 `Do` 方法调用。
|
||
- 移除未使用的 PascalCase 实例方法(SET, GET, DEL, EXISTS, EXPIRE, HSET, HGET, PUBLISH),精简 API 面积。
|
||
- 新增 `getDefaultRedisForJS` 单例模式,从 Context 中提取 `log.Logger` 传入 `GetRedis`,确保 JS 端 Redis 操作具备完整日志追踪能力。
|
||
- 新增 `MakeID` 函数,为 JS 端暴露分布式 ID 生成能力。
|
||
|
||
## v1.5.4 (2026-06-19)
|
||
- **基础设施对齐**: 内部依赖统一升级至 v1.5.x 语义版本。
|
||
|
||
## v1.5.3 (2026-06-18)
|
||
- **JS 导出增强**: 对齐 PascalCase 命名规范,扁平化 default 实例的 JS 导出。
|
||
|
||
## v1.5.2 (2026-06-17)
|
||
- **依赖修复**: 对齐 `encoding` v1.5.2 接口变更。
|
||
|
||
## v1.5.1 (2026-06-08)
|
||
- **新增**: `SetConfig(name, setting string)` 方法,支持动态配置 Redis 连接(不依赖配置文件),方便通过别名获取连接。
|
||
- **优化**: 重构配置加载逻辑,确保动态配置与配置文件配置的共存与优先级。
|
||
|
||
## v1.3.3 (2026-05-30)
|
||
- **新增**: 注册到 `jsmod`。
|
||
- **安全性**: 引入基于 Context 的细粒度权限控制。在 `SafeMode` 下,仅允许读取操作(GET/EXISTS/ZRANGE等),所有写操作(SET/DEL/EXPIRE/DO等)将被拦截并返回错误。
|
||
|
||
## v1.0.8 (2026-05-10)
|
||
- **API 对齐**:
|
||
- `NewIDMaker` 返回值从 `*IDMaker` 修改为 `*id.IDMaker`,保持全局接口统一。
|
||
- 移除了 `redis.IDMaker` 冗余的包装方法,直接使用 `id.IDMaker` 的实现。
|
||
|
||
## v1.0.7 (2026-05-09)
|
||
- **基础设施对齐**:
|
||
- 升级 `apigo.cc/go/log` 至 `v1.1.13`。
|
||
- `redis` 包不涉及自定义日志类型,本次升级无代码变更。
|
||
|
||
## v1.0.6 (2026-05-07)
|
||
- **Security & Compatibility**:
|
||
- 增强 `Redis` 密码解密逻辑,支持 URL-safe Base64 编码的加密密码,提升多平台配置兼容性。
|
||
- **Maintenance**:
|
||
- 升级依赖 `apigo.cc/go/cast` (v1.2.8) 与 `apigo.cc/go/log` (v1.1.9)。
|
||
- 依赖 `apigo.cc/go/encoding` (v1.0.5) 正式转为显式引用。
|
||
|
||
## v1.0.5 (2026-05-06)
|
||
- **Maintenance**:
|
||
- 内部依赖对齐与升级 (`config`, `crypto`, `id`, `safe` 等至 v1.0.5/v1.0.6)。
|
||
- 移除了冗余的 `replace` 指令,清理 `go.sum`。
|
||
|
||
## v1.0.4 (2026-05-06)
|
||
- **Maintenance**:
|
||
- 添加 `.gitignore` 以排除日志元数据。
|
||
- 升级 `apigo.cc/go/log` 至 v1.1.3。
|
||
|
||
## v1.0.3 (2026-05-05)
|
||
- **PubSub Robustness**:
|
||
- 重构 `Redis` 结构体,引入 `pubsub` 内部结构 management 共享状态。
|
||
- 修复了 `CopyByLogger` 场景下 `subs` map 与 `subLock` 不匹配导致的并发竞争风险。
|
||
- 优化 `Start()` 方法,增加运行状态检查,防止冗余的订阅协程启动。
|
||
- 增强 `Stop()` 方法的生命周期管理,确保协程安全退出并清理停止通道。
|
||
|
||
## v1.0.2 (2026-05-04)
|
||
- **Naming Standardization**:
|
||
- 全面将 `Id` 命名规范化为 `ID`(涉及 `IDMaker`, `NewIDMaker`, `userInfo.ID` 等)。
|
||
- **Performance & Efficiency**:
|
||
- 优化 `commands.go`: 所有 Redis 命令调用改为参数化传递,消除字符串拼接,提升解析性能并防止 Key 包含空格的问题。
|
||
- 优化 `redis.go`: 在 `do` 方法中增加判断,若命令不含空格则跳过 `Split` 处理,减少内存分配。
|
||
- **Modernity & Robustness**:
|
||
- 升级错误处理逻辑,使用 `errors.As` 和 `errors.Is` 替换旧式的类型断言。
|
||
- 增强 `Result.To` 方法,增加对目标对象非空指针的强制校验。
|
||
- 完善 `do` 方法对 `values` 的 `nil` 指针检查。
|
||
- **Cleanup**:
|
||
- 删除了冗余的 `AI.md` 文件。
|
||
- **Testing**:
|
||
- 新增 `TestRetry` 用例,验证连接异常时的自动恢复逻辑。
|
||
|
||
## v1.0.1 (2026-05-03)
|
||
- **Security & Stability**:
|
||
- 修复了 `Pub/Sub` 模块中 `subs` map 和 `subConn` 的并发访问竞争风险(Race Condition),引入 `subLock` 互斥锁。
|
||
- **Cleanup**:
|
||
- 移除了 `Redis` 结构体中冗余的 `ReadTimeout` 字段,统一由 `Config` 管理。
|
||
- **Testing & CI/CD**:
|
||
- 新增 `TestMain` 自动环境检查,若 Redis 不可用则优雅跳过测试,不中断 CI 流程。
|
||
- 新增 `TestIdMaker` 覆盖分布式 ID 生成逻辑。
|
||
- 新增 `bench_test.go`,建立性能基准测试。
|
||
- 新增 `TEST.md` 记录测试覆盖场景与 Benchmark 结果。
|
||
|
||
## v1.0.0 (2026-05-03)
|
||
- **Repo Migration**: 从 `@ssgo/redis` 迁移至 `apigo.cc/go/redis`。
|
||
- **Standard Realignment**:
|
||
- 依赖全面切换至 `apigo.cc/go/*` 标准库。
|
||
- 适配 Go 1.25.0。
|
||
- **Feature Enhancements**:
|
||
- **Generics**: 为 `Result` 引入泛型 `To[T]` 支持,消除类型断言摩擦。
|
||
- **Memory Safety**: 集成 `go/safe` 对 Redis 密码进行实时加解密与内存锁定,防止内存泄漏敏感信息。
|
||
- **Auto-Serialization**: 优化了 `Do` 方法,支持对 Struct/Map/Slice 自动进行 JSON 序列化(优先支持 Marshaler 接口)。
|
||
- **Distributed ID**: 深度集成 `go/id` 核心,提供更高性能的 Redis 序列号预取机制。
|
||
- **Refactoring**:
|
||
- 移除了冗余的 `interface{}`,全面改用 `any`。
|
||
- 规范化了 API 命名,统一使用 `GetUpperName` 进行 Struct 字段映射。
|
||
- 增强了连接重试机制,支持对网络波动和服务器重启的自动恢复。
|