使用SpringCache进行缓存数据库查询方式

网友投稿 371 2022-09-19


使用SpringCache进行缓存数据库查询方式

目录SpringCache进行缓存数据库查询1、在SpringBoot的启动类上添加注解@EnableCaching2、在service的方法上添加对应的注解SpringCache 数据库一致性问题缓存和数据库不一致的问题先更新数据库,再更新缓存高并发下redis和数据库不一致问题

SpringCache进行缓存数据库查询

1、在SpringBoot的启动类上添加注解@EnableCaching

开启SpringCache缓存支持

@SpringBootApplication

// 开启SpringCache缓存支持

@EnableCaching

public class GatheringApplication {

public static void main(String[] args) {

SpringApplication.run(Gathehttp://ringApplication.class, args);

}

}

2、在service的方法上添加对应的注解

/**

* 根据ID查询

*

* @param id

* @return

*/

// 使用SpringCache进行缓存数据库查询

@Cacheable(value = "gathering", key = "#id")

public Gathering findById(String id) {

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

}

/**

* 修改

*

* @param gathering

*/

// 修改数据库数据后需要删除redis中的缓存

@CacheEvict(value = "gathering", key = "#gathering.id")

public void update(Gathering gatiqhkyLyEzhering) {

gatheringDao.save(gathering);

}

/**

* 删除

*

* @param id

*/

// 删除数据库数据后需要删除redis中的缓存

@CacheEvict(value = "gathering", key = "#id")

public void deleteById(String id) {

gatheringDao.deleteById(id);

}

SpringCache 数据库一致性问题

缓存和数据库不一致的问题

先更新数据库,再更新缓存

先更新数据库更新成功了,但是更新redis的时候失败了,这就导致了数据库和Redis里面的数据不一致,

解决办法

先更新缓存,再更新数据库,更新缓存的时候,先删除缓存,再去更新数据库,再添加缓存 这样的话即使缓存更新失败了 缓存里面的数据也被删了,如果删除缓存都失败的话,就不更新数据库了,直接抛异常解决,这时候如果后面一个加入缓存失败的话只是增加了一次查询数据库的操作而已(下一次查这个数据的时候把他加入缓存)

高并发下redis和数据库不一致问题

如果这这两个操作刚好在中间虚线部分那么缓存里面的数据和数据库里面的数据就不一样了,这个时候我们要解决这个问题就得引入分布式锁


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:路由策略各种条件工具—访问控制列表(ACL)(查看路由策略)
下一篇:华为设备配置灵活QinQ -VLAN Mapping接入(华为网络设备配置)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~