带有任何过期的Memcache项目将立即在带有Go的Google App Engine上过期

时间:2014-10-06 18:22:07

标签: google-app-engine go memcached

此代码段:

err = memcache.JSON.Set(c, &memcache.Item{
    Key:        mkey,
    Object:     &total,
    Expiration: 600,
})

然后第二次打电话:

_, err := memcache.JSON.Get(c, mkey, &total); 

...导致缓存未命中 只需将Expiration值更改为0就会导致缓存命中,但是我无法控制项目何时到期。

我是否误读了过期应该如何运作?

1 个答案:

答案 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