【发布时间】:2014-10-06 18:22:06
【问题描述】:
这段代码sn-p:
err = memcache.JSON.Set(c, &memcache.Item{
Key: mkey,
Object: &total,
Expiration: 600,
})
接着是第二次调用:
_, err := memcache.JSON.Get(c, mkey, &total);
...导致缓存未命中。
简单地将 Expiration 值更改为 0 会导致缓存命中,但我无法控制项目何时过期。
我是否误读了到期应该如何工作?
【问题讨论】:
-
您是否尝试过大于 600 的值?
Time.Duration(golang.org/pkg/time/#Duration) 以纳秒为单位。也许 600 纳秒有点短。 -
@VonC:我不知道这里使用的是什么包,但我见过的那些确实在几秒钟内设置了 Expiration,但值得检查 ;)
-
@JimB 我正在查看 google appengine 内存缓存项,它确实使用了
Time.Duration:cloud.google.com/appengine/docs/go/memcache/reference#Item -
@VonC:很好,我没有注意到 app-engine 标签。那可能就是问题所在。
-
文档说它是以秒为单位指定的,但事实并非如此。 time.Second * 600 工作。
标签: google-app-engine go memcached