golib/gcache/cache.go

58 lines
917 B
Go
Raw Normal View History

2023-06-15 21:22:51 +08:00
//
// cache.go
// Copyright (C) 2022 tiglog <me@tiglog.com>
//
// Distributed under terms of the MIT license.
//
package gcache
import (
"sync"
"time"
"github.com/go-redis/redis/v8"
)
2023-06-15 21:22:51 +08:00
type Engine struct {
client ICacheAdapter
2023-06-15 21:22:51 +08:00
}
var once sync.Once
var engine *Engine
2023-06-15 21:22:51 +08:00
func New(adapter ICacheAdapter) *Engine {
once.Do(func() {
engine = &Engine{
client: adapter,
}
})
return engine
}
func NewWithRedis(rds *redis.Client) *Engine {
once.Do(func() {
engine = &Engine{
client: NewRedisCacheAdapter(rds),
}
})
return engine
}
func (e *Engine) Get(key string, dest interface{}) error {
return e.client.Get(key, dest)
}
func (e *Engine) Set(key string, val interface{}, ttl time.Duration) error {
return e.client.Set(key, val, ttl)
}
func (e *Engine) Has(key string) bool {
return e.client.Has(key)
}
func (e *Engine) Del(keys ...string) (int64, error) {
return e.client.Del(keys...)
2023-06-15 21:22:51 +08:00
}