为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

万千封印 2022-05-25 15:37:58
@Override@Cacheable("stu")public EmployeeEntity getEmployee(Integer id) {    return employeeDAO.findById(id).get(); } 上面的代码以这种格式“stu::7”将键保存在redis中,这里“stu”是缓存的名称,7是键,但是它将缓存名称和id存储为一个键。但我想以这种格式存储在 redis STU -> 7 Stu 应该是缓存的名称,并且在里面所有的键值对。
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

您可以将自定义密钥生成器设置为@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 的名称在哪里。


查看完整回答
反对 回复 2022-05-25
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

这很奇怪,因为文档告诉


默认为“”,这意味着所有方法参数都被视为一个键,除非配置了自定义 keyGenerator()。


这很简单,但是如果您以前不尝试,请尝试显式设置键和缓存名称


@Cacheable(value = "stu", key = "{#id}")

public EmployeeEntity getEmployee(Integer id) {

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


查看完整回答
反对 回复 2022-05-25
  • 2 回答
  • 0 关注
  • 219 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信