gpt4 book ai didi

java - CacheResolver 和 KeyGenerator 之间有什么区别以及何时使用它们

转载 作者:行者123 更新时间:2023-12-01 17:52:33 26 4
gpt4 key购买 nike

我正在向我的 Web 应用程序添加缓存机制。经过研究后,我决定将 Ehcache 与 Spring 一起使用。

向方法添加@Cachable注释将执行该方法一次,并且对于任何进一步的调用,将从缓存返回响应。

问题是我需要在运行时决定(让我们根据登录的用户假设)决定要使用哪个缓存。

我已经到了需要决定是使用 KeyGenerators 还是 cacheResolver 的地步。

我搜索了最佳实践,以及何时使用它们中的每一个,但没有找到任何好的读物。我希望有人能够澄清差异并详细说明最佳实践以及该做和不该做的事情。

key 生成器:

  @Bean
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object o, Method method, String loggedInUserId) {
StringBuilder sb = new StringBuilder();
sb.append("cache_");
sb.append(loggedInUserId);
return sb;
}
};

缓存解析器

class loggedInUserCacheResolver implements CacheResolver {
@Override
public Collection<? extends Cache> resolveCaches(CacheOperationInvocationContext<?> context) {
Collection<Cache> caches = new ArrayList<>();
// do some logic and return caches to use.
return caches;
}
}

最佳答案

KeyGenerator 只允许您操作缓存 key 的创建。然而,所有键仍将属于单个缓存,即使它们不会发生任何冲突。

CacheResolver 允许您使用逻辑来选择要使用的Cache

根据您的初始声明,您需要一个适合您的用例的CacheResolver。请注意,我没有仔细检查缓存是否解析一次每次调用。

请注意,您可以组合这两个注释来拥有自定义缓存和自定义键定义。

关于java - CacheResolver 和 KeyGenerator 之间有什么区别以及何时使用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48389762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com