此代码段:
err = memcache.JSON.Set(c, &memcache.Item{
Key: mkey,
Object: &total,
Expiration: 600,
})
然后第二次打电话:
_, err := memcache.JSON.Get(c, mkey, &total);
...导致缓存未命中 只需将Expiration值更改为0就会导致缓存命中,但是我无法控制项目何时到期。
我是否误读了过期应该如何运作?
答案 0 :(得分:4)
由于memcache.Item确实使用Time.Duration(纳秒),因此最好使用秒指定Expiration
字段:
time.Second * 600
memcache doc提到:
// Expiration is the maximum duration that the item will stay
// in the cache.
// The zero value means the Item has no expiration time.
// Subsecond precision is ignored.
// This is not set when getting items.
Expiration time.Duration