50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
|
// Package easymap ...
|
||
|
//
|
||
|
// Description : easymap ...
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 2023-12-14 15:51
|
||
|
package easymap
|
||
|
|
||
|
import "git.zhangdeman.cn/zhangdeman/util"
|
||
|
|
||
|
// GetShardAndKeyFunc 获取数据所处分片以及key
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 15:55 2023/12/14
|
||
|
type GetShardAndKeyFunc func(interface{}) (int, interface{})
|
||
|
|
||
|
// DefaultGetShardAndKeyFunc 默认实现
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 15:57 2023/12/14
|
||
|
func DefaultGetShardAndKeyFunc(key interface{}) GetShardAndKeyFunc {
|
||
|
return func(key interface{}) (int, interface{}) {
|
||
|
return -1, key
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// GetShardAndKeyFuncWithShardCount 获取数据分片和key
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 15:59 2023/12/14
|
||
|
func GetShardAndKeyFuncWithShardCount(shardCnt int, key interface{}) GetShardAndKeyFunc {
|
||
|
return func(key interface{}) (int, interface{}) {
|
||
|
return util.Hash.GetHashIDMod(key, shardCnt), key
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// common 公共基础结构
|
||
|
//
|
||
|
// Author : go_developer@163.com<白茶清欢>
|
||
|
//
|
||
|
// Date : 15:52 2023/12/14
|
||
|
type common struct {
|
||
|
data map[interface{}]interface{} // 输入数据
|
||
|
GetShardAndKeyFunc GetShardAndKeyFunc // 获取分片以及key的函数
|
||
|
}
|