bilibili-backup/app/interface/main/app-intl/dao/recommend/memcache.go
2019-04-22 02:59:20 +00:00

88 lines
1.9 KiB
Go

package recommend
import (
"context"
"go-common/app/interface/main/app-card/model/card/ai"
"go-common/library/cache/memcache"
"github.com/pkg/errors"
)
const (
_prefixRcmdAids = "rc"
_prefixRcmd = "rc2"
)
func keyRcmdAids() string {
return _prefixRcmdAids
}
func keyRcmd() string {
return _prefixRcmd
}
// AddRcmdAidsCache add ai into cahce.
func (d *Dao) AddRcmdAidsCache(c context.Context, aids []int64) (err error) {
conn := d.mc.Get(c)
key := keyRcmdAids()
item := &memcache.Item{Key: key, Object: aids, Flags: memcache.FlagJSON, Expiration: d.expireMc}
if err = conn.Set(item); err != nil {
err = errors.Wrapf(err, "%v", aids)
}
conn.Close()
return
}
// RcmdAidsCache get ai cache data from cache
func (d *Dao) RcmdAidsCache(c context.Context) (aids []int64, err error) {
var r *memcache.Item
conn := d.mc.Get(c)
key := keyRcmdAids()
defer conn.Close()
if r, err = conn.Get(key); err != nil {
if err == memcache.ErrNotFound {
err = nil
return
}
err = errors.Wrap(err, key)
return
}
if err = conn.Scan(r, &aids); err != nil {
err = errors.Wrapf(err, "%s", r.Value)
}
return
}
// AddRcmdCache add ai into cahce.
func (d *Dao) AddRcmdCache(c context.Context, is []*ai.Item) (err error) {
conn := d.mc.Get(c)
key := keyRcmd()
item := &memcache.Item{Key: key, Object: is, Flags: memcache.FlagJSON, Expiration: d.expireMc}
if err = conn.Set(item); err != nil {
err = errors.Wrap(err, key)
}
conn.Close()
return
}
// RcmdCache get ai cache data from cache
func (d *Dao) RcmdCache(c context.Context) (is []*ai.Item, err error) {
var r *memcache.Item
conn := d.mc.Get(c)
key := keyRcmd()
defer conn.Close()
if r, err = conn.Get(key); err != nil {
if err == memcache.ErrNotFound {
err = nil
return
}
err = errors.Wrap(err, key)
return
}
if err = conn.Scan(r, &is); err != nil {
err = errors.Wrapf(err, "%s", r.Value)
}
return
}