41 lines
758 B
Go
41 lines
758 B
Go
// Package util...
|
|
//
|
|
// Description : util...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2021-02-24 11:04 下午
|
|
package util
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/spaolacci/murmur3"
|
|
)
|
|
|
|
// hash ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 14:41 2022/5/14
|
|
type hash struct {
|
|
}
|
|
|
|
// GetHashID ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 11:04 下午 2021/2/24
|
|
func (h *hash) GetHashID(key interface{}) uint64 {
|
|
return murmur3.Sum64([]byte(fmt.Sprintf("%v", key)))
|
|
}
|
|
|
|
// GetHashIDMod 获取hashID并取模
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 11:07 下午 2021/2/24
|
|
func (h *hash) GetHashIDMod(key interface{}, shard int) int {
|
|
return int(h.GetHashID(key) % uint64(shard))
|
|
}
|