# CHANGELOG - 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 字段映射。 - 增强了连接重试机制,支持对网络波动和服务器重启的自动恢复。