chore: release v1.0.8 - align NewIDMaker API with id.IDMaker
This commit is contained in:
parent
e9ffae9fd2
commit
b1b000d9a3
@ -1,5 +1,10 @@
|
|||||||
# CHANGELOG - redis
|
# CHANGELOG - redis
|
||||||
|
|
||||||
|
## v1.0.8 (2026-05-10)
|
||||||
|
- **API 对齐**:
|
||||||
|
- `NewIDMaker` 返回值从 `*IDMaker` 修改为 `*id.IDMaker`,保持全局接口统一。
|
||||||
|
- 移除了 `redis.IDMaker` 冗余的包装方法,直接使用 `id.IDMaker` 的实现。
|
||||||
|
|
||||||
## v1.0.7 (2026-05-09)
|
## v1.0.7 (2026-05-09)
|
||||||
- **基础设施对齐**:
|
- **基础设施对齐**:
|
||||||
- 升级 `apigo.cc/go/log` 至 `v1.1.13`。
|
- 升级 `apigo.cc/go/log` 至 `v1.1.13`。
|
||||||
|
|||||||
@ -32,9 +32,7 @@
|
|||||||
- `Stop()`: 停止所有订阅。
|
- `Stop()`: 停止所有订阅。
|
||||||
|
|
||||||
### 分布式 ID (IDMaker)
|
### 分布式 ID (IDMaker)
|
||||||
- `NewIDMaker(rd *Redis) *IDMaker`: 创建分布式 ID 生成器。
|
- `NewIDMaker(rd *Redis) *id.IDMaker`: 创建基于 Redis 的分布式 ID 生成器。
|
||||||
- `Get(size int)`: 获取指定长度的唯一 ID。
|
|
||||||
- `GetForMysql(size int)`: 获取针对 MySQL 优化的唯一 ID。
|
|
||||||
|
|
||||||
## 示例
|
## 示例
|
||||||
|
|
||||||
|
|||||||
1
go.sum
1
go.sum
@ -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/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 h1:32nOCr+8AkGFnKuythCjHPOjxilg6SOlSWXKTkNtx6I=
|
||||||
apigo.cc/go/config v1.0.6/go.mod h1:nX+nLKZTP6Xton9Gt/9XsTh0d1sQ+Qkwysgyjq/k4R0=
|
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/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 h1:a2XbXyd8D2gKo1ekXn/pt5adltWbIfdJCMhaF2uvzF0=
|
||||||
apigo.cc/go/encoding v1.0.5/go.mod h1:V5CgT7rBbCxy+uCU20q0ptcNNRSgMtpA8cNOs6r8IeI=
|
apigo.cc/go/encoding v1.0.5/go.mod h1:V5CgT7rBbCxy+uCU20q0ptcNNRSgMtpA8cNOs6r8IeI=
|
||||||
|
|||||||
24
id.go
24
id.go
@ -7,22 +7,20 @@ import (
|
|||||||
"apigo.cc/go/id"
|
"apigo.cc/go/id"
|
||||||
)
|
)
|
||||||
|
|
||||||
type IDMaker struct {
|
type idMaker struct {
|
||||||
rd *Redis
|
rd *Redis
|
||||||
secCurrent uint64
|
secCurrent uint64
|
||||||
secIndexMax uint64
|
secIndexMax uint64
|
||||||
secIndexNext uint64
|
secIndexNext uint64
|
||||||
lock sync.Mutex
|
lock sync.Mutex
|
||||||
maker *id.IDMaker
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewIDMaker(rd *Redis) *IDMaker {
|
func NewIDMaker(rd *Redis) *id.IDMaker {
|
||||||
im := &IDMaker{rd: rd}
|
im := &idMaker{rd: rd}
|
||||||
im.maker = id.NewIDMaker(im.makeSecIndex)
|
return id.NewIDMaker(im.makeSecIndex)
|
||||||
return im
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (im *IDMaker) makeSecIndex(sec uint64) uint64 {
|
func (im *idMaker) makeSecIndex(sec uint64) uint64 {
|
||||||
im.lock.Lock()
|
im.lock.Lock()
|
||||||
defer im.lock.Unlock()
|
defer im.lock.Unlock()
|
||||||
|
|
||||||
@ -48,15 +46,3 @@ func (im *IDMaker) makeSecIndex(sec uint64) uint64 {
|
|||||||
}
|
}
|
||||||
return idx
|
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)
|
|
||||||
}
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user