hmap
Hybrid memory/disk map that helps you to manage key value storage for input deduplication.
Available functions:
Name |
Declaration/Params/Return |
New |
func New(options Options) (*HybridMap, error){} |
Close |
func (hm *HybridMap) Close() error{} |
Set |
func (hm *HybridMap) Set(k string, v []byte) error{} |
Get |
func (hm *HybridMap) Get(k string) ([]byte, bool){} |
Del |
func (hm *HybridMap) Del(key string) error{} |
Scan |
func (hm *HybridMap) Scan(f func([]byte, []byte) error){} |
Size |
func (hm *HybridMap) Size() int64{} |
TuneMemory |
func (hm *HybridMap) TuneMemory(){} |
Available options:
const (
Memory MapType = iota
Disk
Hybrid
)
type DBType int
const (
LevelDB DBType = iota
PogrebDB
BBoltDB
BuntDB
)
Name |
Props |
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:
type Options struct {
MemoryExpirationTime time.Duration
DiskExpirationTime time.Duration
JanitorTime time.Duration
Type MapType
DBType DBType
MemoryGuardForceDisk bool
MemoryGuard bool
MaxMemorySize int
MemoryGuardTime time.Duration
Path string
Cleanup bool
Name string
RemoveOlderThan time.Duration
}
Simple usage example
func main() {
var wg sync.WaitGroup
wg.Add(1)
go normal(&wg)
wg.Wait()
}
func normal(wg *sync.WaitGroup) {
defer wg.Done()
hm, err := hybrid.New(hybrid.DefaultOptions)
if err != nil {
log.Fatal(err)
}
defer hm.Close()
err2 := hm.Set("a", []byte("b"))
if err2 != nil {
log.Fatal(err2)
}
v, ok := hm.Get("a")
if ok {
log.Println(v)
}
}
License
hmap is distributed under MIT License