Java 清除memcache AppEngine不工作

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

我在AppEngine中使用memcache会话处理。有时在发布时,我会以一种使memcache内容过时的方式更改对象。当我进行测试时,我希望能够清除我的会话

我添加了一个servlet来清除memcache,它使用:

        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也有问题?或者仅仅因为这个而没有问题?在使用了添加前缀的技巧之后,我再也没有问题了。