自建博客(day5之redis艰辛之路)
隔了这么久,终于把博客整合redis弄完了,之前学过springboot整合redis但是,那些只是一些简单的使用,当时只是按着视频的教学案例学,按着视频代码敲,很多问题自己没有考虑过,这次自己从零开始弄redis缓存,显得有点力不从心。
一开始想整合开始redis时,有些思路,参考了这个网站上的整合教程:
https://how2j.cn/k/springboot/springboot-redis/1789.html
后来参考完了,把代码都弄完便后,结果可想而知,一大堆得报错,幸亏我把blog1.5版存储了一份(之前长过一次教训了,项目每一次大更新的时候,一定要保存一份上一版本,否则项目一旦出问题,找不到恢复,哭都没处哭去)。
项目恢复上一版本,这次比较小心了,开始自己深度思考redis的原理,redis存储的数据类型,自己在黑马程序员找到了redis的教程,开始系统的去学习redis。
关于redis的学习我都做好了笔记:
redis学习(之入门)
redis学习(之数据类型)
笔记是关于windows部署redis,以及redis数据类型的一些基本操作。
通过这次学习,我学的还不够深,后面的分布式部署,分布锁还都没有学,但是通过这些知识,对于我理解项目中的部署已经不成问题了,项目中主要使用的是jpa,还有使用的注解部署redis,这些注解的使用我也整理了一遍,具体的在这篇文档我进行了详细的说明:
关于springboot中redis注解我想说
后来,当我把redis注解配置好了之后,发现系统总是报序列化的问题,于是关于序列化,我做了整理,发布到这:
jpa中josn序列化问题
当序列化问题解决完了,我开始怀疑我是否将数据存入了redis,将数据存入了redis我是否将数据从redis取出。这里使用了一个redis可视化工具:RedisClient,这个工具可以是我们摆脱小黑框的命令窗口的服务端,像操作mysql一样方便的查看操作数据。但是查看数据是否从redis取出还是一个问题,这里就使用了junit这个单元测试工具进行service层方法的单元测试。会发现,当数据从mysql取出来一次后,再次取数据将不会调用那些方法。证明,数据是从redis取出的。
项目一点一点调试,后面还有好多小的bug,
关于整合完成redis后的一系列小的bug整理了一下
发布到了这篇问章中:
blog2.0需要修改的一系列问题总结
因为是第一次自己是使用redis,当时做的时候没有考虑到到底什么时候应该用缓存,所以当时就把所有的数据都存入了缓存,后来,通过整理这些bug,发现,首先博客的搜素不能用缓存,一次搜素,存一个key值,还要调用一次数据库,显而易见啊,这里利用缓存一点意义都没有,空加了访问次数,其二,由于浏览量的数目是存储再blog 对象里的,由于浏览量时刻刷新,这时候就导致缓存会频繁的从数据库读数据更新数据,显得有些得不偿失了,如果想用,就要修改数据库结构,将访问量独立处理。其三,设计到多个对象交互要慎重选用缓存,缓存里面不要对象嵌套对象。
终于部署成功!
对于搜索那一块,后期准备再整合一下搜索引擎
ElasticSearch,尽情期待 ! ! ! !
关于修改版blog2.1,后期我会将网址上传到这里。
最后欢迎关注,点赞支持。