Java 清除memcache AppEngine不工作
我在AppEngine中使用memcache会话处理。有时在发布时,我会以一种使memcache内容过时的方式更改对象。当我进行测试时,我希望能够清除我的会话 我添加了一个servlet来清除memcache,它使用:Java 清除memcache AppEngine不工作,java,google-app-engine,servlets,memcached,Java,Google App Engine,Servlets,Memcached,我在AppEngine中使用memcache会话处理。有时在发布时,我会以一种使memcache内容过时的方式更改对象。当我进行测试时,我希望能够清除我的会话 我添加了一个servlet来清除memcache,它使用: try { CacheFactory cacheFactory = CacheManager.getInstance() .getCacheFactory(); cacheFa
try {
CacheFactory cacheFactory = CacheManager.getInstance()
.getCacheFactory();
cacheFactory.createCache(Collections.emptyMap()).clear();
outputMessage(response, "CLEARED cache");
} catch (CacheException e1) {
LOG.log(Level.SEVERE, "cache issue", e1);
outputMessage(response, "cache issue!!!!!!!!");
}
我使用以下方法转储会话内容:
Enumeration<String> e = request.getSession().getAttributeNames();
outputMessage(response, "DUMPING SESSION..");
while (e.hasMoreElements()) {
String name = e.nextElement();
outputMessage(response, "Name:" + name + " value: "
+ request.getSession().getAttribute(name).toString());
}
枚举e=request.getSession().getAttributeNames();
outputMessage(响应,“转储会话…”);
而(e.hasMoreElements()){
字符串名称=e.nextElement();
outputMessage(响应,“名称:”+Name+“值:”
+request.getSession().getAttribute(name.toString());
}
在清除之前和之后转储会话看起来没有什么不同
我用对了吗
干杯为了解决这个问题,我通常会在memcache中存储的对象的键上附加一个版本id。例如,而不是:
memcache.add('key', 'value')
我有:
稍后,如果我想使memcache中的所有数据无效,我只需更改版本号(并且memcache中已存储的条目在过期时将自动删除)。为了解决这个问题,我通常会在memcache中存储的对象的密钥中附加一个版本id。例如,而不是:
memcache.add('key', 'value')
我有:
稍后,如果我想使memcache中的所有数据无效,我只需更改版本号(memcache中已存储的条目在过期时将自动删除)。您所说的“清除会话”是什么意思?Memcache不同于会话。您如何转储值?请给我们看一些代码。感谢您的反馈,更新了问题“清空会话”是什么意思?Memcache不同于会话。您如何转储值?请给我们看一些代码。感谢您的反馈,更新了问题。您应该小心,您的密钥不能与您用于版本的数字重叠。例如,如果我在memcache中看到两个键,17和117,很难判断它们是否都适用于对象7,一个来自版本1,一个来自版本11,或者它们是否适用于对象7和17,都来自版本1。是的,你是对的,这就是为什么我在版本和键之间添加了一个“#”,并确保没有键具有“#”字符。所以清除memcache也有问题?或者仅仅是因为这个而没有问题?在使用了添加前缀的技巧之后,我再也没有问题了。你应该小心,你的键不能与你用于版本的数字重叠。例如,如果我在memcache中看到两个键,17和117,很难判断它们是否都适用于对象7,一个来自版本1,一个来自版本11,或者它们是否适用于对象7和17,都来自版本1。是的,你是对的,这就是为什么我在版本和键之间添加了一个“#”,并确保没有键具有“#”字符。所以清除memcache也有问题?或者仅仅因为这个而没有问题?在使用了添加前缀的技巧之后,我再也没有问题了。