此代码段:
err = memcache.JSON.Set(c, &memcache.Item{
Key: mkey,
Object: &total,
Expiration: 600,
})
随后与此进行第二次调用:
_, err := memcache.JSON.Get(c, mkey, &total);
...导致缓存未命中。
只需将Expiration值更改为0会导致高速缓存命中,但是后来我无法控制这些项目何时过期。
我是否误解了到期应该如何工作?
最佳答案
由于memcache.Item确实使用Time.Duration(纳秒),因此最好使用秒来指定Expiration
字段:
time.Second * 600
内存缓存文档中提到:
// 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