栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis缓存

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis缓存

redis缓存 学习
  • redis缓存使用 注解
    • Cacheable 使用 查询缓存
    • CachePut 使用 更新缓存
    • redis缓存与数据库双写一致性解决方案
    • 阿里canal

redis缓存使用 注解 Cacheable 使用 查询缓存

![在这里插入图片描述](https://img-blog.csdnimg.cn/3162b173ed824ebda0d54d77c9926fc4.png
1:添加在service层
redis没缓存,就会去mysql查询出来 然后存到缓存
第二次查询的时候 就从redis缓存查询


redis存储的key 表示 cacheNames的值 跟 key的 “#p0” (表示传进来的第一个参数) 拼起来
#p0: 这个固定语法,#代表标识符,p表示param,0表示第一个参数
使用场景
如果该对象不会被修改,或者修改的对象非常少,访问量特别高,可以将该对象放到缓存,不从数据库读取。
例子
1:系统公告

CachePut 使用 更新缓存


使用该注解:
表示redis缓存 和数据库 同步修改
注意:
redis key值要相同 不然无法更新缓存数据

redis缓存与数据库双写一致性解决方案

案发场景

案发1:当一个数据在做删除操作的时候,先删除redis,然后业务时间比较长,再删除的db数据库,这个时候缓存第一时间删除了,但是当删除缓存到删除db数据库的这个时间段,有一个查询这条数据的请求进来了,这个时候会发现redis没有数据,但是db数据库有数据,这个时候又会把db数据库的数据缓存到redis缓存。
结果:删除执行以后,明明执行了删除缓存,db数据库删除成功了,redis缓存还在。

解决方法

延时双删
就是删除的时候 进去就把redis缓存删除执行逻辑后,删除db数据库,删除成功后,接着再一次删除redis缓存,这样就不会出现缓存还在的问题。
使用RabbitMQ解决
rabbitmq是有序的,保证缓存的一个有序的

阿里canal

canal服务
阿里Canal主要是通过伪装成mysql从server来向主server拉取数据
Canal在双写一致性中所处的位置

1:canal模拟mysql slave的交互协议,伪装自己为 mysql slave,向mysql master发送dump协议。
2:mysql master收到dump请求,开始推送binary log 给 slave(也就是canal)
3:canal解析binary log 对象(原始为byte流)
4:canal将解析后的对象数据推送给监听的消息中间件(实时主动推送,rabbitmq需要是在线状态)
canal服务安装配置

下载安装包,修改配置

总结

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1036106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号