Change backend for in-memory cache to patrickmn/go-cache

This commit is contained in:
ChronosX88 2021-05-27 22:30:11 +03:00
parent 43871c6141
commit 3366a71ac1
Signed by: ChronosXYZ
GPG Key ID: 085A69A82C8C511A
3 changed files with 16 additions and 23 deletions

View File

@ -3,54 +3,45 @@ package cache
import ( import (
"time" "time"
"github.com/VictoriaMetrics/fastcache" "github.com/patrickmn/go-cache"
"github.com/fxamacker/cbor/v2"
) )
const ( const (
// DefaultInMemoryCacheCapacity is maximal in-memory cache size in bytes DefaultCacheExpiration = 5 * time.Minute
DefaultInMemoryCacheCapacity = 32000000 DefaultGCInterval = 10 * time.Minute
) )
type InMemoryCache struct { type InMemoryCache struct {
cache *fastcache.Cache cache *cache.Cache
} }
func NewInMemoryCache() *InMemoryCache { func NewInMemoryCache() *InMemoryCache {
return &InMemoryCache{ return &InMemoryCache{
cache: fastcache.New(DefaultInMemoryCacheCapacity), cache: cache.New(DefaultCacheExpiration, DefaultGCInterval),
} }
} }
func (imc *InMemoryCache) Store(key string, value interface{}) error { func (imc *InMemoryCache) Store(key string, value interface{}) error {
mRes, err := cbor.Marshal(value) imc.cache.Set(key, value, cache.NoExpiration)
if err != nil {
return err
}
imc.cache.SetBig([]byte(key), mRes)
return nil return nil
} }
func (imc *InMemoryCache) StoreWithTTL(key string, value interface{}, ttl time.Duration) error { func (imc *InMemoryCache) StoreWithTTL(key string, value interface{}, ttl time.Duration) error {
return imc.Store(key, value) // fastcache doesn't support ttl for values imc.cache.Set(key, value, ttl)
return nil
} }
func (imc *InMemoryCache) Get(key string, v interface{}) error { func (imc *InMemoryCache) Get(key string, value interface{}) error {
data := make([]byte, 0) v, exists := imc.cache.Get(key)
imc.cache.GetBig(data, []byte(key)) if !exists {
if len(data) == 0 {
return ErrNilValue return ErrNilValue
} }
err := cbor.Unmarshal(data, v) value = v
if err != nil {
return err
}
return nil return nil
} }
func (imc *InMemoryCache) Delete(key string) { func (imc *InMemoryCache) Delete(key string) {
imc.cache.Del([]byte(key)) imc.cache.Delete(key)
} }

2
go.mod
View File

@ -5,7 +5,6 @@ go 1.14
require ( require (
github.com/Secured-Finance/go-libp2p-pex v1.1.0 github.com/Secured-Finance/go-libp2p-pex v1.1.0
github.com/Secured-Finance/golang-set v1.8.0 github.com/Secured-Finance/golang-set v1.8.0
github.com/VictoriaMetrics/fastcache v1.5.7
github.com/aristanetworks/goarista v0.0.0-20210308203447-b196d8410f1d // indirect github.com/aristanetworks/goarista v0.0.0-20210308203447-b196d8410f1d // indirect
github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef // indirect github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef // indirect
github.com/cespare/cp v1.1.1 // indirect github.com/cespare/cp v1.1.1 // indirect
@ -46,6 +45,7 @@ require (
github.com/multiformats/go-multiaddr v0.3.1 github.com/multiformats/go-multiaddr v0.3.1
github.com/multiformats/go-multihash v0.0.15 // indirect github.com/multiformats/go-multihash v0.0.15 // indirect
github.com/olekukonko/tablewriter v0.0.4 // indirect github.com/olekukonko/tablewriter v0.0.4 // indirect
github.com/patrickmn/go-cache v2.1.0+incompatible
github.com/raulk/clock v1.1.0 github.com/raulk/clock v1.1.0
github.com/rjeczalik/notify v0.9.2 // indirect github.com/rjeczalik/notify v0.9.2 // indirect
github.com/rs/cors v1.7.0 // indirect github.com/rs/cors v1.7.0 // indirect

2
go.sum
View File

@ -1469,6 +1469,8 @@ github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnh
github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34=
github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g=
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=