Redis的缓存机制(11)

Redis的缓存机制(11)

一、实验目的

二、实验用的仪器和材料

三、实验的步骤和方法

(1)参照实验手册,编写redis-cli命令。

(2)参照实验手册,为在线问答项目增加Redis缓存。

四、实验结果或结论

五、备注或说明


一、实验目的

(1)掌握Redis缓存的常见数据类型及其命令

(2)掌握Spring Boot项目整合Redis缓存的方法

(3)理解缓存发霉问题及其解决方案

二、实验用的仪器和材料

(1)硬件:PC或Mac一台;8G及以上内存,40G硬盘空间

(2)软件环境:Windows 10/11操作系统或其他支持JVM的操作系统

三、实验的步骤和方法

(1)参照实验手册,编写redis-cli命令。

       1.1 定义一个集合,key为users:1, 向集合中添加5个元素: a, b, c, d, e

1.2 定义一个集合,key为users:2, 向集合中添加5个元素:b, c, e, f, g

1.3 求上述两个集合的交集

1.4 使用列表,向key为databases的列表中插入一下几个值:mysql, oracle, mssql, postgresql, mongodb, redis

1.5 获取databases中元素的个数

1.6 从列表中删除最先插入的元素

1.7 从列表中删除最后插入的元素

1.8 获取当前列表的所有元素

1.9 获取当前redis中的所有key

(2)参照实验手册,为在线问答项目增加Redis缓存。

       2.1 运行mybatis-plus-demo项目

2.2 在pom.xml中添加redis依赖

2.3 在配置文件中增加redis配置(注意缩进)

2.4 新增config包,在config包下新增RedisConfig类,用于定义序列化和反序列化

2.5 新增util包,在util包下新增RedisUtil类,封装RedisTemplate

2.4 修改service包下的ProblemService类的get方法,使其先读缓存再读数据库

2.5 修改service.bo包下的Problem类,实现Serializable接口

2.6 利用postman发get请求,验证get方法是否将数据写入redis

2.7 利用postman发delete请求,验证删除数据时是否存在缓存发霉问题

2.8 修改service包下的ProblemService类的delete方法和update方法,在删除和修改数据时,删除缓存

2.9 再次验证缓存发霉问题是否得到解决

四、实验结果或结论

缓存发霉问题

发霉问题:缓存数据和数据库数据不一致

解决方案:update、insert、delete会直接删除对应表的缓存

本地缓存的问题:在分布式环境下,会导致缓存发霉问题

本地缓存的问题

应用服务器1: 发select请求,缓存了查询结果

应用服务器2:发update请求,修改了DB数据,同时清除了服务器2上的本地缓存,但服务器1上的缓存没有发生变化

此时就产生了缓存发霉(不一致性)的问题

不要在分布式系统中使用Mybatis二级缓存,应使用分布式缓存解决一致性问题

五、备注或说明

实验过程顺利,能够按时完成实验任务,学习了缓存机制,认识到了缓存发霉的问题,也就是造成数据库内容与缓存不一样的情况,也就说明了我在上一次实验中遇到的问题,就说得通了,数据库内容与我实际操作有不一致性,应该就是缓存机制导致的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值