Categorygithub.com/daqnext/go-fast-cache
modulepackage
1.0.6
Repository: https://github.com/daqnext/go-fast-cache.git
Documentation: pkg.go.dev

# README

go-fast-cache

go-fast-cache is a high-speed, thread-safe, key-value caching system. All data is kept in memory.

All expired data will be removed by background go-routine automatically.

usage

//import
import (
    localcache "github.com/daqnext/go-fast-cache"
)
//new instance
//new a localcache instance with default config
//DefaultDeleteExpireIntervalSecond(Schedule job for delete expired key interval) is 5 seconds
//DefaultCountLimit(Max key-value pair count) is 1000,000

log, err := locallog.New(path_util.GetAbsPath("logs"), 2, 20, 30)
if err != nil {
    panic(err.Error())
}
lc := localcache.New(log)

//set
//Set(key string, value interface{}, ttlSecond int64)
//ttlSecond should >0, MaxTTL is 7200sec(2 hour)
lc.Set("foo", "bar", 300)
lc.Set("a", 1, 300)
lc.Set("b", Person{"Jack", 18}, 300)
lc.Set("b*", &Person{"Jack", 18}, 300)
lc.Set("c", true, 100)

//get
//Get(key string) (value interface{}, ttl int64, exist bool)
value, ttlLeft, exist := lc.Get("foo")
if exist {
    valueStr, ok := value.(string) //value type is interface{}, please convert to the right type before use
    log.Println("key:foo",",valuestr:",valueStr,",typeok:",ok,",ttlLeft:",ttlLeft)
}

//get
log.Println("---get---")
log.Println(lc.Get("foo"))
log.Println(lc.Get("a"))
log.Println(lc.Get("b"))
log.Println(lc.Get("b*"))
log.Println(lc.Get("c"))

//delete
lc.Delete("a")
lc.Delete("b")

//overwrite
log.Println("---set overwrite ---")
log.Println(lc.Get("c"))
lc.Set("c", false, 60)
log.Println(lc.Get("c"))

custom DeleteExpireIntervalSecond and key-value pair CountLimit

//new instance
log, err := locallog.New(path_util.GetAbsPath("logs"), 2, 20, 30)
if err != nil {
    panic(err.Error())
}
lc,err := localcache.NewWithInterval(20,log) //custom schedule job interval(second) for delete expired key
if err != nil {
    panic(err.Error())
}
lc.SetCountLimit(10000) //custom the max key-value pair count

key-value pair count over limit

If the key-value pair reach DefaultCountLimit : 15% of the oldest expired key-value will be deleted automatically by background routine asap.

Default limit

MaxTTLSecond: 7200 seconds(2 hours)

DefaultCountLimit:1000000
MinCountLimit:10000

MaxDeleteExpireIntervalSecond:300 seconds
DefaultDeleteExpireIntervalSecond:5 seconds

Benchmark

set

cpu: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
BenchmarkLocalCache_SetPointer
BenchmarkLocalCache_SetPointer-8   	 1000000	      1618 ns/op	     379 B/op	      10 allocs/op
PASS

get

cpu: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
BenchmarkLocalCache_GetPointer
BenchmarkLocalCache_GetPointer-8   	 9931429	       129.7 ns/op	       0 B/op	       0 allocs/op
PASS

# Packages

No description provided by the author
No description provided by the author
No description provided by the author

# Functions

New Instance of localCache, the interval of scheduleDeleteExpire job use the default value 5 seconds.
NewWithInterval Instance of localCache, param intervalSecond defines the interval of scheduleDeleteExpire job, if intervalSecond <=0,it will use the default value 5 seconds.

# Constants

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

No description provided by the author