|
|
@@ -8,22 +8,42 @@
|
|
|
package mtpcache
|
|
|
|
|
|
import (
|
|
|
+ "github.com/muesli/cache2go"
|
|
|
"mtp2_if/db"
|
|
|
"mtp2_if/utils"
|
|
|
- "sync"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
-// GoodsCache 商品缓存
|
|
|
-type GoodsCache struct {
|
|
|
- mtx sync.RWMutex
|
|
|
- data map[int64]Goods
|
|
|
- last time.Time
|
|
|
-}
|
|
|
+var goodsCache *cache2go.CacheTable
|
|
|
+
|
|
|
+func init() {
|
|
|
+ goodsCache = cache2go.Cache("goods")
|
|
|
+ goodsCache.SetDataLoader(func(key interface{}, param ...interface{}) *cache2go.CacheItem {
|
|
|
+ if v, ok := key.(int64); ok {
|
|
|
+ m := Goods{GOODSID: v}
|
|
|
+ if d, err := m.GetData(); err == nil {
|
|
|
+ if len(d) > 0 {
|
|
|
+ val := d[0]
|
|
|
+ item := cache2go.NewCacheItem(val.GOODSID, 0, val)
|
|
|
+ return item
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
-// Load 加载数据
|
|
|
-func (r *GoodsCache) Load() {
|
|
|
+ return nil
|
|
|
+ })
|
|
|
|
|
|
+ // go loadData()
|
|
|
+}
|
|
|
+
|
|
|
+func loadData() {
|
|
|
+ time.Sleep(time.Second * 5)
|
|
|
+ m := Goods{}
|
|
|
+ if d, err := m.GetData(); err == nil {
|
|
|
+ for _, v := range d {
|
|
|
+ goodsCache.Add(v.GOODSID, 0, &v)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Goods 商品信息
|