Files
ow-api/cache/gcache.go
2019-06-13 20:01:05 -04:00

48 lines
672 B
Go

package cache
import (
"github.com/bluele/gcache"
"net/url"
"strconv"
"time"
)
type Gcache struct {
cache gcache.Cache
}
func NewGcache(u *url.URL) *Gcache {
size := 128
q := u.Query()
if sizeStr := q.Get("size"); sizeStr != "" {
var err error
size, err = strconv.Atoi(sizeStr)
if err != nil {
size = 128
}
}
gc := gcache.New(size).
LRU().
Build()
return &Gcache{cache: gc}
}
func (c *Gcache) Get(key string) ([]byte, error) {
res, err := c.cache.Get(key)
if err != nil {
return nil, err
}
return res.([]byte), err
}
func (c *Gcache) Set(key string, b []byte, d time.Duration) error {
return c.cache.SetWithExpire(key, b, d)
}