Spring Cache 中的 @Cacheable 将值存储在缓存之外的 redis 中

@Override

@Cacheable("stu")

public EmployeeEntity getEmployee(Integer id) {


    return employeeDAO.findById(id).get(); 

上面的代码以这种格式“stu::7”将键保存在redis中,这里“stu”是缓存的名称,7是键,但是它将缓存名称和id存储为一个键。


但我想以这种格式存储在 redis STU -> 7 Stu 应该是缓存的名称,并且在里面所有的键值对。


万千封印
浏览 220回答 2
2回答

收到一只叮咚

您可以将自定义密钥生成器设置为@Cacheable注释,您可以根据需要对其进行自定义:https ://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/cache/annotation/Cacheable.html #keyGenerator——@Cacheable(value = "stu", keyGenerator = "customKeyGenerator")customKeyGenerator您的自定义密钥生成器 bean 的名称在哪里。

眼眸繁星

这很奇怪,因为文档告诉默认为“”,这意味着所有方法参数都被视为一个键,除非配置了自定义 keyGenerator()。这很简单,但是如果您以前不尝试,请尝试显式设置键和缓存名称@Cacheable(value = "stu", key = "{#id}")public EmployeeEntity getEmployee(Integer id) {    return employeeDAO.findById(id).get(); } 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java