打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Spring Boot Cache 配合 Redis 使用时,向数据库添加新记录成功后,相应更新缓存的正确方法?

使用 Spring Boot Cache 结合 JPA,缓存用 Redis,下面是一个非常简单的查增服务代码,但是测试发现,只有那些在第一次触发 findAll()前就被写入缓存的记录会被返回,即使此时查看后台数据库已经添加了很多新的记录,然后每次都会命中缓存,就只有最初那条记录。

@Service@CacheConfig(cacheNames = "todoService")public class TodoServiceImpl implements TodoService {    private final TodoRepository todoRepository;    @Autowired    public TodoServiceImpl(TodoRepository todoRepository) {        this.todoRepository = todoRepository;    }    @Override    @Cacheable(value= "allTodoCache", unless= "#result.size() == 0")    public List<Todo> getAllTodos() {        return todoRepository.findAll();    }    @Override    @CachePut(value= "allTodoCache", key= "#todo.id")    public Todo save(Todo todo) {        return this.todoRepository.save(todo);    }}

查看 Redis 发现,虽然使用@CachePut更新了缓存,但是最初那条记录allTodoCache::SimpleKey []里面的 ArrayList 并没有更新,而是直接另外加了新的记录,但似乎 JPA 的 findAll()只会查看这条记录里的数组。

[	"java.util.ArrayList",	[		{			"@class": "com.domain.Todo",			"id": 1,			"content": "First Record"		}	]]

所以想问下正确地在 JPA 存储新记录时更新 Redis 使得 findAll()能获取全部最新记录的方法是什么?

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Spring Boot中,Redis缓存还能这么用!
统一缓存帝国,实战 Spring Cache!
springmvc redis @Cacheable扩展(一)
Springboot中Spring-cache与redis整合
springboot整合spring @Cache和Redis
Spring Boot 基于注解的 Redis 缓存使用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服