chore: release v1.0.8 - align NewIDMaker API with id.IDMaker

This commit is contained in:
AI Engineer 2026-05-10 09:52:32 +08:00
parent e9ffae9fd2
commit b1b000d9a3
4 changed files with 12 additions and 22 deletions

View File

@ -1,5 +1,10 @@
# CHANGELOG - redis
## 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`

View File

@ -32,9 +32,7 @@
- `Stop()`: 停止所有订阅。
### 分布式 ID (IDMaker)
- `NewIDMaker(rd *Redis) *IDMaker`: 创建分布式 ID 生成器。
- `Get(size int)`: 获取指定长度的唯一 ID。
- `GetForMysql(size int)`: 获取针对 MySQL 优化的唯一 ID。
- `NewIDMaker(rd *Redis) *id.IDMaker`: 创建基于 Redis 的分布式 ID 生成器。
## 示例

1
go.sum
View File

@ -2,6 +2,7 @@ apigo.cc/go/cast v1.2.8 h1:plb676DH2TjYljzf8OEMGT6lIhmZ/xaxEFfs0kDOiSI=
apigo.cc/go/cast v1.2.8/go.mod h1:lGlwImiOvHxG7buyMWhFzcdvQzmSaoKbmr7bcDfUpHk=
apigo.cc/go/config v1.0.6 h1:32nOCr+8AkGFnKuythCjHPOjxilg6SOlSWXKTkNtx6I=
apigo.cc/go/config v1.0.6/go.mod h1:nX+nLKZTP6Xton9Gt/9XsTh0d1sQ+Qkwysgyjq/k4R0=
apigo.cc/go/crypto v1.0.5 h1:uJyO9X5O9OAnGGy37fuxdC18uZkOB1PyOYSFZiaDY5Q=
apigo.cc/go/crypto v1.0.5/go.mod h1:c7a7sY2Yv9/531WS72L3tmB7OqdY3IUWIS1Jhv0Pfgc=
apigo.cc/go/encoding v1.0.5 h1:a2XbXyd8D2gKo1ekXn/pt5adltWbIfdJCMhaF2uvzF0=
apigo.cc/go/encoding v1.0.5/go.mod h1:V5CgT7rBbCxy+uCU20q0ptcNNRSgMtpA8cNOs6r8IeI=

24
id.go
View File

@ -7,22 +7,20 @@ import (
"apigo.cc/go/id"
)
type IDMaker struct {
type idMaker struct {
rd *Redis
secCurrent uint64
secIndexMax uint64
secIndexNext uint64
lock sync.Mutex
maker *id.IDMaker
}
func NewIDMaker(rd *Redis) *IDMaker {
im := &IDMaker{rd: rd}
im.maker = id.NewIDMaker(im.makeSecIndex)
return im
func NewIDMaker(rd *Redis) *id.IDMaker {
im := &idMaker{rd: rd}
return id.NewIDMaker(im.makeSecIndex)
}
func (im *IDMaker) makeSecIndex(sec uint64) uint64 {
func (im *idMaker) makeSecIndex(sec uint64) uint64 {
im.lock.Lock()
defer im.lock.Unlock()
@ -48,15 +46,3 @@ func (im *IDMaker) makeSecIndex(sec uint64) uint64 {
}
return idx
}
func (im *IDMaker) Get(size int) string {
return im.maker.Get(size)
}
func (im *IDMaker) GetForMysql(size int) string {
return im.maker.GetForMysql(size)
}
func (im *IDMaker) GetForPostgreSQL(size int) string {
return im.maker.GetForPostgreSQL(size)
}