更新缓存模块
This commit is contained in:
@@ -2,23 +2,51 @@ package drive
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/elastic/go-elasticsearch/v8"
|
||||
"github.com/gogf/gf/v2/container/gvar"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gcache"
|
||||
"github.com/gogf/gf/v2/os/gctx"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
adapterElasticsearchClient gcache.Adapter
|
||||
)
|
||||
|
||||
type AdapterElasticsearch struct {
|
||||
//FilePath string
|
||||
Addresses []string
|
||||
client *elasticsearch.TypedClient
|
||||
name string
|
||||
}
|
||||
|
||||
func (a AdapterElasticsearch) Set(ctx context.Context, key interface{}, value interface{}, duration time.Duration) error {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
func (a AdapterElasticsearch) Set(ctx context.Context, _key interface{}, value interface{}, duration time.Duration) (err error) {
|
||||
key := gconv.String(_key)
|
||||
data := gconv.Map(value)
|
||||
if duration > 0 {
|
||||
data["delete_time"] = time.Now().Add(duration)
|
||||
}
|
||||
_, err = a.client.Index(a.name).Id(key).
|
||||
Document(data).Do(ctx)
|
||||
if err != nil {
|
||||
fmt.Printf("indexing document failed, err:%v\n", err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (a AdapterElasticsearch) SetMap(ctx context.Context, data map[interface{}]interface{}, duration time.Duration) error {
|
||||
//TODO implement me
|
||||
for k, v := range data {
|
||||
save := gconv.Map(v)
|
||||
if duration > 0 {
|
||||
save["delete_time"] = time.Now().Add(duration)
|
||||
}
|
||||
key := gconv.String(k)
|
||||
a.client.Index(a.name).Id(key).
|
||||
Document(save).Do(ctx)
|
||||
}
|
||||
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
@@ -37,9 +65,17 @@ func (a AdapterElasticsearch) SetIfNotExistFuncLock(ctx context.Context, key int
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (a AdapterElasticsearch) Get(ctx context.Context, key interface{}) (*gvar.Var, error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
func (a AdapterElasticsearch) Get(ctx context.Context, key interface{}) (res *gvar.Var, err error) {
|
||||
_key := gconv.String(key)
|
||||
resp, err := a.client.Get(a.name, _key).
|
||||
Do(context.Background())
|
||||
if err != nil {
|
||||
fmt.Printf("get document by id failed, err:%v\n", err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("fileds:%s\n", resp.Source_)
|
||||
res = gvar.New(resp.Source_)
|
||||
return
|
||||
}
|
||||
|
||||
func (a AdapterElasticsearch) GetOrSet(ctx context.Context, key interface{}, value interface{}, duration time.Duration) (result *gvar.Var, err error) {
|
||||
@@ -82,9 +118,26 @@ func (a AdapterElasticsearch) Values(ctx context.Context) (values []interface{},
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (a AdapterElasticsearch) Update(ctx context.Context, key interface{}, value interface{}) (oldValue *gvar.Var, exist bool, err error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
func (a AdapterElasticsearch) Update(ctx context.Context, _key interface{}, value interface{}) (oldValue *gvar.Var, exist bool, err error) {
|
||||
key := gconv.String(_key)
|
||||
data := gconv.Map(value)
|
||||
oldValue, err = a.Get(ctx, key)
|
||||
if err != nil {
|
||||
exist = false
|
||||
} else {
|
||||
for k, v := range oldValue.Map() {
|
||||
if _, ok := data[k]; !ok {
|
||||
data[k] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_, err = a.client.Update(a.name, key).
|
||||
Doc(data).Do(context.Background())
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (a AdapterElasticsearch) UpdateExpire(ctx context.Context, key interface{}, duration time.Duration) (oldDuration time.Duration, err error) {
|
||||
@@ -98,8 +151,15 @@ func (a AdapterElasticsearch) GetExpire(ctx context.Context, key interface{}) (t
|
||||
}
|
||||
|
||||
func (a AdapterElasticsearch) Remove(ctx context.Context, keys ...interface{}) (lastValue *gvar.Var, err error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
//获取keys最后一个
|
||||
lastKey := keys[len(keys)-1]
|
||||
lastValue, _ = a.Get(ctx, lastKey)
|
||||
|
||||
for k := range keys {
|
||||
key := gconv.String(k)
|
||||
a.client.Delete(a.name, key).Do(ctx)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (a AdapterElasticsearch) Clear(ctx context.Context) error {
|
||||
@@ -112,8 +172,17 @@ func (a AdapterElasticsearch) Close(ctx context.Context) error {
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func NewAdapterElasticsearch(addresses []string) gcache.Adapter {
|
||||
return &AdapterElasticsearch{
|
||||
Addresses: addresses,
|
||||
func NewAdapterElasticsearch(name string) gcache.Adapter {
|
||||
|
||||
if adapterElasticsearchClient == nil {
|
||||
_cfg, _ := g.Cfg().Get(gctx.New(), "elasticsearch")
|
||||
var cfg elasticsearch.Config
|
||||
_cfg.Scan(&cfg)
|
||||
es, _ := elasticsearch.NewTypedClient(cfg)
|
||||
adapterElasticsearchClient = &AdapterElasticsearch{
|
||||
client: es,
|
||||
name: name,
|
||||
}
|
||||
}
|
||||
return adapterElasticsearchClient
|
||||
}
|
||||
|
||||
@@ -16,17 +16,6 @@ type AdapterFile struct {
|
||||
}
|
||||
|
||||
func (a AdapterFile) Set(ctx context.Context, key interface{}, value interface{}, duration time.Duration) error {
|
||||
//defer a.handleLruKey(ctx, key)
|
||||
//expireTime := a.getInternalExpire(duration)
|
||||
//a.data.Set(key, memoryDataItem{
|
||||
// a: value,
|
||||
// a: expireTime,
|
||||
//})
|
||||
//c.eventList.PushBack(&adapterMemoryEvent{
|
||||
// k: key,
|
||||
// e: expireTime,
|
||||
//})
|
||||
|
||||
arr := strings.Split(":", gconv.String(key))
|
||||
fileName := path.Join(arr...)
|
||||
return gfile.PutBytes(fileName, gconv.Bytes(value))
|
||||
|
||||
@@ -19,7 +19,6 @@ func NewAdapterRedis() gcache.Adapter {
|
||||
redisObj, _ := gredis.New(cfg)
|
||||
//adapterRedisClient = gcache.NewAdapterRedis(g.Redis("default"))
|
||||
adapterRedisClient = gcache.NewAdapterRedis(redisObj)
|
||||
|
||||
adapterRedisCache.SetAdapter(adapterRedisClient)
|
||||
}
|
||||
return adapterRedisCache
|
||||
|
||||
Reference in New Issue
Block a user