【发布时间】:2012-07-02 14:53:34
【问题描述】:
我想在任何给定时间获取“活动”键的计数。现在根据 API 文档 getItemCount() 意味着返回这个。
然而事实并非如此。过期键不会减少 getItemCount() 的值。为什么是这样?如何准确计算所有未过期的“活动”或“活动”密钥?
这是我的放置代码; syncCache.put(uid, cachedUID, Expiration.byDeltaSeconds(3), SetPolicy.SET_ALWAYS);
现在密钥应该在 3 秒后过期。它会使它们过期,但 getItemCount() 不反映键的真实计数。
更新: 看来 memcache 可能不是我应该使用的,所以这就是我想要做的。
我希望编写一个 google-app 引擎服务器/应用程序,作为桌面应用程序的“用户在线”功能。桌面应用程序使用唯一 ID 作为参数向应用程序发出 http 请求。应用程序将此 UID 与时间戳一起存储。每 3 分钟执行一次。
每 5 分钟删除一次时间戳超出 5 分钟窗口的任何条目。然后你计算你有多少条目,这就是有多少用户“在线”。
过期功能看起来很完美,因为那时我什至不需要担心时间戳或清除过期条目。
【问题讨论】:
-
在将项目放入缓存之前和之后立即显示什么?是否确定添加了该项目?
-
getItemCount 增量很好,并在创建新密钥时正确显示。但是,如果我理解正确,它应该在密钥过期时递减?
标签: java google-app-engine memcached