FileHashmap 文件Hash索引(支持重复的Key)基于Go实现, 能力列表:
- Get(key string) []values
- Set(key string, value uint32)
- Del(key string)
具体介绍:
- 优化了Key存储逻辑(固定的Key只会存在一个文件里)
- 新增了过期机制(添加了下一次可以写入的游标)
- 待补充细节...
可以直接阅读源码来学习具体的实现, 如果实在懒得看, 可以按照下面做:
package main
import (
"github.com/invxp/fsm"
"testing"
)
func TestSingle(t *testing.T) {
// 初始化
// 最大索引槽数量
// 最大索引数量
// 最多文件数量
// 索引目录
fileHashMap := fsm.NewFileHashMap(
fsm.DefaultMaxSlotCount,
fsm.DefaultMaxIndexCount,
fsm.DefaultMaxFileCount,
"idx",
)
// 写入KV
fileHashMap.Set("Key", 1)
// 打印KV
fileHashMap.Get("Key")
}
测试用例可以这样做:
$ go test -v -race -run @XXXXX(具体方法名)
PASS / FAILED
或测试全部用例:
$ go test -v -race
- Value切换成可变长度String
- Value可以修改 + Key不可重复
- 删除Key
- 支持高可用(多机)