Skip to content

Latest commit

History

326 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

hmap

Hybrid memory/disk map that helps you to manage key value storage for input deduplication.


Available functions:

NameDeclaration/Params/Return
Newfunc New(options Options) (*HybridMap, error){}
Closefunc (hm *HybridMap) Close() error{}
Setfunc (hm *HybridMap) Set(k string, v []byte) error{}
Getfunc (hm *HybridMap) Get(k string) ([]byte, bool){}
Delfunc (hm *HybridMap) Del(key string) error{}
Scanfunc (hm *HybridMap) Scan(f func([]byte, []byte) error){}
Sizefunc (hm *HybridMap) Size() int64{}
TuneMemoryfunc (hm *HybridMap) TuneMemory(){}

Available options:

const (
MemoryMapType=iotaDiskHybrid
)
typeDBTypeintconst (
LevelDBDBType=iotaPogrebDBBBoltDBBuntDB
)
NameProps
DefaultOptions- Type: Memory
- MemoryExpirationTime: time.Duration(5) * time.Minute
- JanitorTime: time.Duration(1) * time.Minute
DefaultMemoryOptions- Type: Memory
DefaultDiskOptions- Type: Disk
- DBType: LevelDB
- Cleanup: true
- RemoveOlderThan: 24* time.Hour *2
DefaultDiskOptions- Type: Hybrid
- DBType: PogrebDB
- MemoryExpirationTime: time.Duration(5) * time.Minute
- JanitorTime: time.Duration(1) * time.Minute

Custom options:

typeOptionsstruct {
MemoryExpirationTime time.DurationDiskExpirationTime time.DurationJanitorTime time.DurationTypeMapTypeDBTypeDBTypeMemoryGuardForceDiskboolMemoryGuardboolMaxMemorySizeintMemoryGuardTime time.DurationPathstringCleanupboolNamestringRemoveOlderThan time.Duration
}

Simple usage example

funcmain() {
varwg sync.WaitGroupwg.Add(1)
gonormal(&wg)
wg.Wait()
}
funcnormal(wg*sync.WaitGroup) {
deferwg.Done()
hm, err:=hybrid.New(hybrid.DefaultOptions)
iferr!=nil {
log.Fatal(err)
}
deferhm.Close()
err2:=hm.Set("a", []byte("b"))
iferr2!=nil {
log.Fatal(err2)
}
v, ok:=hm.Get("a")
ifok {
log.Println(v)
}
}

License

hmap is distributed under MIT License

About

Hybrid memory/disk map

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

63 stars

Watchers

11 watching

Forks

Releases

Packages

Contributors

Languages