1 Star 1 Fork 0

妙音 / oils

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
sequence.go 775 Bytes
一键复制 编辑 原始数据 按行查看 历史
妙音 提交于 2021-05-23 20:30 . slice
package level
import (
"encoding/binary"
"gitee.com/xuender/oils/u32"
)
// NextSequence 序列.
func (p *Service) NextSequence(key []byte) uint32 {
mu := p.getMutex(key)
mu.Lock()
defer mu.Unlock()
seq := uint32(0)
seqKey := []byte{ByteSeq}
seqKey = append(seqKey, key...)
if bs, err := p.DB.Get(seqKey, nil); err == nil {
seq = binary.BigEndian.Uint32(bs)
}
seq++
if err := p.DB.Put(seqKey, u32.Bytes(seq), nil); err != nil {
panic(err)
}
return seq
}
// NextSequenceASC 下一个顺序Key.
func (p *Service) NextSequenceASC(key []byte) []byte {
return KeyASCByUint32(key, p.NextSequence(key))
}
// NextSequenceDESC 下一个倒序Key.
func (p *Service) NextSequenceDESC(key []byte) []byte {
return KeyDESCByUint32(key, p.NextSequence(key))
}
1
https://gitee.com/xuender/oils.git
git@gitee.com:xuender/oils.git
xuender
oils
oils
v1.1.23

搜索帮助

53164aa7 5694891 3bd8fe86 5694891