|
|
|
package testdata
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/go-kratos/kratos/pkg/cache/memcache"
|
|
|
|
"github.com/go-kratos/kratos/pkg/container/pool"
|
|
|
|
xtime "github.com/go-kratos/kratos/pkg/time"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Dao .
|
|
|
|
type Dao struct {
|
|
|
|
mc *memcache.Memcache
|
|
|
|
demoExpire int32
|
|
|
|
}
|
|
|
|
|
|
|
|
// New new dao
|
|
|
|
func New() (d *Dao) {
|
|
|
|
cfg := &memcache.Config{
|
|
|
|
Config: &pool.Config{
|
|
|
|
Active: 10,
|
|
|
|
Idle: 5,
|
|
|
|
IdleTimeout: xtime.Duration(time.Second),
|
|
|
|
},
|
|
|
|
Name: "test",
|
|
|
|
Proto: "tcp",
|
|
|
|
// Addr: "172.16.33.54:11214",
|
|
|
|
Addr: "127.0.0.1:11211",
|
|
|
|
DialTimeout: xtime.Duration(time.Second),
|
|
|
|
ReadTimeout: xtime.Duration(time.Second),
|
|
|
|
WriteTimeout: xtime.Duration(time.Second),
|
|
|
|
}
|
|
|
|
d = &Dao{
|
|
|
|
mc: memcache.New(cfg),
|
|
|
|
demoExpire: int32(5),
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
//go:generate kratos tool genmc
|
|
|
|
type _mc interface {
|
|
|
|
// mc: -key=demoKey
|
|
|
|
CacheDemos(c context.Context, keys []int64) (map[int64]*Demo, error)
|
|
|
|
// mc: -key=demoKey
|
|
|
|
CacheDemo(c context.Context, key int64) (*Demo, error)
|
|
|
|
// mc: -key=keyMid
|
|
|
|
CacheDemo1(c context.Context, key int64, mid int64) (*Demo, error)
|
|
|
|
// mc: -key=noneKey
|
|
|
|
CacheNone(c context.Context) (*Demo, error)
|
|
|
|
// mc: -key=demoKey
|
|
|
|
CacheString(c context.Context, key int64) (string, error)
|
|
|
|
|
|
|
|
// mc: -key=demoKey -expire=d.demoExpire -encode=json
|
|
|
|
AddCacheDemos(c context.Context, values map[int64]*Demo) error
|
|
|
|
// mc: -key=demo2Key -expire=d.demoExpire -encode=json
|
|
|
|
AddCacheDemos2(c context.Context, values map[int64]*Demo, tp int64) error
|
|
|
|
// 这里也支持自定义注释 会替换默认的注释
|
|
|
|
// mc: -key=demoKey -expire=d.demoExpire -encode=json|gzip
|
|
|
|
AddCacheDemo(c context.Context, key int64, value *Demo) error
|
|
|
|
// mc: -key=keyMid -expire=d.demoExpire -encode=gob
|
|
|
|
AddCacheDemo1(c context.Context, key int64, value *Demo, mid int64) error
|
|
|
|
// mc: -key=noneKey
|
|
|
|
AddCacheNone(c context.Context, value *Demo) error
|
|
|
|
// mc: -key=demoKey -expire=d.demoExpire
|
|
|
|
AddCacheString(c context.Context, key int64, value string) error
|
|
|
|
|
|
|
|
// mc: -key=demoKey
|
|
|
|
DelCacheDemos(c context.Context, keys []int64) error
|
|
|
|
// mc: -key=demoKey
|
|
|
|
DelCacheDemo(c context.Context, key int64) error
|
|
|
|
// mc: -key=keyMid
|
|
|
|
DelCacheDemo1(c context.Context, key int64, mid int64) error
|
|
|
|
// mc: -key=noneKey
|
|
|
|
DelCacheNone(c context.Context) error
|
|
|
|
}
|
|
|
|
|
|
|
|
func demoKey(id int64) string {
|
|
|
|
return fmt.Sprintf("art_%d", id)
|
|
|
|
}
|
|
|
|
|
|
|
|
func demo2Key(id, tp int64) string {
|
|
|
|
return fmt.Sprintf("art_%d_%d", id, tp)
|
|
|
|
}
|
|
|
|
|
|
|
|
func keyMid(id, mid int64) string {
|
|
|
|
return fmt.Sprintf("art_%d_%d", id, mid)
|
|
|
|
}
|
|
|
|
|
|
|
|
func noneKey() string {
|
|
|
|
return "none"
|
|
|
|
}
|