我对我的服务进行了以下注释
@Cacheable(cacheNames = {"some"},
key = "{#req.some, #req.other, #req.property}")
public List<Some> listSome(SomeReq req) {
..
}
看来工作正常,我通过Medis看到了这些钥匙。
(coupon
是spring.cache.redis.key-prefix
的值。)
coupon{Some},{Other},{Property}
coupon{Some},{Other},{Property}
coupon{Some},{Other},{Property}
coupon{Some},{Other},{Property}
coupon{Some},{Other},{Property}
coupon{Some},{Other},{Property}
cacheNames
在哪里起作用?
如果我添加其他具有相同键模式的服务方法,是否可能发生冲突?
@Cacheable(cacheNames = {"someOther"},
key = "{#req.some, #req.other, #req.property}")
List<SomeOther> listSomeOthers(SomeOtherReq req) {
}
答案 0 :(得分:1)
如果我添加其他具有相同键模式的服务方法,是否可能发生冲突?
否,因为cacheNames
是(类似)命名空间,因此您可以在不同的命名空间中使用相同的键。
答案 1 :(得分:1)
我正在回答自己的问题,以寻求进一步的帮助。
简而言之,我需要为RedisCacheManager
定义一个bean,以使cacheNames
起作用。
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
final RedisCacheManager cacheManager = RedisCacheManager.builder(connectionFactory)
.cacheDefaults(defaultCacheConfig())
.build();
return cacheManager;
}
如您所见,defaultCacheConfig()
中我没有进行任何更改。
键的属性以{cacheName}::
为前缀。