首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring @CacheEvict使用通配符

Spring @CacheEvict使用通配符
EN

Stack Overflow用户
提问于 2013-07-19 22:46:26
回答 6查看 10.7K关注 0票数 16

有没有办法在@CacheEvict中使用通配符?

我有一个具有多租户的应用程序,它有时需要从租户的缓存中逐出所有数据,而不是系统中所有租户的数据。

考虑以下方法:

代码语言:javascript
复制
@Cacheable(value="users", key="T(Security).getTenant() + #user.key")
public List<User> getUsers(User user) {
    ...
}

所以,我想做一些类似的事情:

代码语言:javascript
复制
@CacheEvict(value="users", key="T(Security).getTenant() + *")
public void deleteOrganization(Organization organization) {
    ...
}

有没有办法做到这一点?

EN

Stack Overflow用户

发布于 2013-11-05 05:09:39

答案是:不。

而且实现你想要的东西也不是一件容易的事情。

  1. Spring Cache注解必须简单,易于通过缓存实现provider.
  2. Efficient缓存必须简单。有一个键和一个值。如果在缓存中找到key,则使用该值,否则计算值并将其放入缓存。Efficient key必须具有快速诚实的equals()hashcode()。假设您缓存了来自一个租户的多个对(键、值)。为了提高效率,不同的键应该有不同的hashcode()。你决定把整个房客赶出去。在缓存中查找租户元素并非易事。您必须迭代所有缓存的对,并丢弃属于租户的对。它的效率不高。它不是原子的,所以它很复杂,需要一些同步。同步效率不高。

因此,不是。

但是,如果你找到了解决方案,告诉我,因为你想要的功能真的很有用。

票数 6
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17749049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档