【问题标题】:Remove value from ehCache whose key starts with 'xyz'从 ehCache 中删除其键以“xyz”开头的值
【发布时间】:2015-09-12 19:30:59
【问题描述】:

我有一个要求,我必须从特定缓存中删除一个以某个值开头的键,例如xyz

实际密钥可以是xyz12345xyzehrekxyz5eei7等。 我正在使用 Spring 注释从特定缓存中删除一个值。我不想从缓存中删除所有内容,只删除以xyz开头的键的对象。

@CacheEvict(value="someCache", key="#keyStartsWith")
public void removeValueFromCache(String keyStartsWith) {

}

我尝试在密钥中传递"^#keyStartsWith"。但它不起作用。

【问题讨论】:

  • 你尝试过使用@CacheEvict 的条件属性吗?
  • 你能提供更多的细节吗?
  • 试试这个,如果它可以帮助...docs.spring.io/spring/docs/current/javadoc-api/org/…
  • 试过很多。但它有局限性。除了像 Abhishek 在下面建议的那样以老式方式实施之外,别无选择。

标签: spring caching ehcache


【解决方案1】:

我知道这样做的一种骇人听闻的方式。

首先,在您将元素存储到缓存中的代码中,创建一个数组列表来专门存储键。

ArrayList<String> keys

现在当你想删除匹配“xyz”的键时,你可以做的是

for (String key : keys)
    if (key.contains("xyz")
        cache.remove(key);

希望这会有所帮助!

【讨论】:

  • 谢谢阿布舍克。这个解决方案一直在我的脑海中,但如果我别无选择,我会考虑这是最后的选择。
猜你喜欢
  • 2016-07-06
  • 2015-06-15
  • 2016-03-05
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多