cacheHelper.go 1.89 KiB
Newer Older
Sandeep S. Shewalkar's avatar
 
Sandeep S. Shewalkar committed
package cachehelper
Onkar Sutar's avatar
Onkar Sutar committed
	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/coreospackage/logginghelper"
	"github.com/allegro/bigcache"
)

const (
Sandeep S. Shewalkar's avatar
 
Sandeep S. Shewalkar committed
	BIGCACHEShards             = 8
	BIGCACHEMaxEntrySize       = 1024
	BIGCACHEVerbose            = true
	BIGCACHEHardMaxCacheSize   = 0
Onkar Sutar's avatar
Onkar Sutar committed
	BIGCACHEMaxEntriesInWindow = 100000
Sandeep S. Shewalkar's avatar
 
Sandeep S. Shewalkar committed
	BIGCACHELifeWindow         = 2
Sandeep S. Shewalkar's avatar
 
Sandeep S. Shewalkar committed

var bigcacheConfig = bigcache.Config{
	// number of shards (must be a power of 2)
	// Shards: 4096,
	Shards: BIGCACHEShards,
	// time after which entry can be evicted
	LifeWindow: BIGCACHELifeWindow * time.Hour,
	// rps * lifeWindow, used only in initial memory allocation
Sandeep S. Shewalkar's avatar
 
Sandeep S. Shewalkar committed
	MaxEntriesInWindow: BIGCACHEMaxEntriesInWindow,
	// MaxEntriesInWindow: 10,
	// max entry size in bytes, used only in initial memory allocation
	MaxEntrySize: BIGCACHEMaxEntrySize,
	// prints information about additional memory allocation
	Verbose: BIGCACHEVerbose,
	// cache will not allocate more memory than this limit, value in MB
	// if value is reached then the oldest entries can be overridden for the new ones
	// 0 value means no size limit
	HardMaxCacheSize: BIGCACHEHardMaxCacheSize,
	// callback fired when the oldest entry is removed because of its
	// expiration time or no space left for the new entry. Default value is nil which
	// means no callback and it prevents from unwrapping the oldest entry.
	OnRemove: nil,
}

var cache, initErr = bigcache.NewBigCache(bigcacheConfig)

//GetValue GetValue
func GetValue(key string) ([]byte, error) {
	return cache.Get(key)
}

//SetValue SetValue
Onkar Sutar's avatar
Onkar Sutar committed
func SetValue(key string, value []byte) error {
	return cache.Set(key, value)
}

//GetLength GetLength
func GetLength() int {
	return cache.Len()
}

//Callback function executed when cache element is removed.
//Executed only when onRemove of cache config poting to this function
func onRemove(key string, entry []byte) {
Onkar Sutar's avatar
Onkar Sutar committed
	logginghelper.LogInfo(key + " removed at " + time.Now().String())
Sandeep S. Shewalkar's avatar
 
Sandeep S. Shewalkar committed
}