问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SpringBoot进阶之缓存中间件Redis

发布网友 发布时间:2022-08-20 16:29

我来回答

1个回答

热心网友 时间:2023-11-07 10:05

大家好,一直以来我都本着 用最通俗的话理解核心的知识点, 我认为所有的难点都离不开 「基础知识」 的铺垫

「大佬可以绕过 ~」

本节给大家讲讲 「Java的SpringBoot框架」 , 之前我们学习的都是java的基础知识和底层提供的一些能力,我们日常工作都是在写接口。在我们在产品开发中,一般我们都会选择比较稳定的框架来帮我们加速开发,不会自己去造轮子,而在java众多框架中,spring框架表现的非常好,大部分公司都会首选它作为开发框架,而至今,大部分企业都是以springboot 来构建项目了,一个稳健的系统需要引入稳定的技术~

如果你是一路看过来的,很高兴你能够耐心看完。前几期都是带大家学习了 SpringBoot 的基础使用以及集成mybatis 开发,这也是我们写业务的基础,如果你还不熟悉这些,请先看完它们。接下来的几期内容将会带大家进阶使用,会先讲解基础中间件 的使用和一些场景的应用,或许这些技术你听说过,没看过也没关系,我会带大家一步一步的入门,耐心看完你一定会有收获 ,本期将会给大家讲解最热门的缓存中间件技术Redis ,同样的,我们集成到Springboot 中。最近github可能会被墙,所以我把源码放到了国内gitee上,本节我们依然使用上期的代码

Redis 是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。全称叫Remote Dictionary Server(远程数据服务) 是由C语言 编写的,Redis是一个key-value 存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash

它本质上是一种键值对数据库,我们之前学习的 mysql 它是持久层的关系型数据库,而redis 它的存储主要存在内存 中。我们都知道在内存 中的数据读取是非常快的,就好比你把一个变量存到磁盘读取和直接放到代码中运行,肯定是在代码中拿到的速度快,因为运行时期,都是直接存到内存的。

给大家总结一下:

有了基本的概念之后,我们下面进行环境搭建,在学习阶段,安装 redis 很简单,生产环境一般我们也会选择云产品,一切为了服务保障,虽说它只是做缓存用,但也是系统的一把保护伞

如果你是 mac 用户,你可以运行如下命令:

安装完成后会提示你运行命令,运行即可。

win 用户也很简单,直接下载redis 软件,双击运行即可,运行之后它会有一个小方块的图案,和locahost:6379 的log,说明运行成功了。初始阶段没有配置的redis 默认host 就是本地,port 就是6379 , 而且是没有密码 就可以访问的。

推荐一个客户端软件 Redis Desktop Manager ,它是redis 的客户端界面软件,方便面我们学习的时候清理缓存 使用,生产慎连。

我们不给大家讲它的基本命令使用,它也有语法,可以通过类似命令执行,如果想学习的小伙伴,可以自行搜索。本期重点内容是在 sprinboot 中的使用,我们平时开发不可能是去命令行里敲的,都是代码里执行,而目前市面上有很多封装好的库,我们可以直接调用它的方法,很方便的就可以操作它了,不用记一些繁琐的命令,下面我们就实际操作一下:

修改 pom.xml

修改 application.yml :

redis 默认是有16 个库,不是15 个啊,从0 开始算的,我们随便连一个

通过代码很好理解, 首先需要引入 StringRedisTemplate ,然后需要设置一个key ,那么思考一下,这个key 允许重复吗

我们进客户端看一下,发现 key 还是只有一个,但是值变成了新的值了,所以可以得知key 是唯一的,我们重新设置的时候相当于刷新了它。

redis 中删除缓存有两种方式,一种是自我消亡,也就是过期 销毁,还有有一种是主动 销毁,我们先看一下,过期时间如何设置

我们设置了 10s 后过期,过完10s后发现,这个```key data``消失了。我们在看看如何主动删除

我们可以利用 Redis 做一个计数器,实现自增功能,你可以用它做网站访问统计

通常做法,我们会把它封装一下,后续使用直接引入封装好的即可,把它直接交给 Springboot容器 管理

其实这个类,你还可以继续进一步封装,比如约束 key 的规范,约束过期时间,约束数据类型等等,这一切也都是为了规范和后期维护,防止滥用缓存

缓存的主要场景是用于解决热点数据问题,因为这些数据是访问频率比较高的,当大量的请求进来, mysql 可能压力很大,这样一来,数据查询效率就很慢,用户肯不高兴等了,这样用户体验很不好。所以我们一般做法,都是把这些热点数据放到缓存里,因为缓存读取速度很快。当有新数据的时候,我们再及时更新它,一般流程是先查询缓存,查到了直接返回缓存数据,查不到再走数据库,然后再刷回缓存。

但是并发足够大的时候,还是会暴露出很多问题,比如面试常问的一些高频问题 缓存雪崩、缓存穿透、缓存雪崩 ,这些问题后边会给大家专门讲,和如何去防范。所以总的来说,引入任何一门技术并不是万事大吉,还需我们不断的在实践中积累经验

本期到这里就结束了,总结一下,我们了解了什么是 redis ,以及在springboot 中如何去使用它们,很简单,没什么复杂的东西。但这里想多说一点的是,缓存的设计却是很复杂的,因为工具是死的,人是活的,我们如何正确设计,需要我们在项目中不断的积累。

我们之前教大家查询列表数据,都是所有数据返回,还没有教大家如何去做分页,下期将带大家学习一下 mybatis 分页插件的使用 ,下期不见不散, 关注我,不迷路~

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...经常感到孤独、万事无聊,请问怎样治疗孤独?谢谢! 移动号码不用了一段时间现在拨号显示空号要怎么激活 圣女小番茄简介 《一曲终人两散》最新txt全集下载 石膏几何体写生内容简介 石膏几何体内容简介 句子: We mustn't climb the trees.怎么填空? 市妇婴医院生产点样建档? 长治怀孕建档要准备什么材料呢? 工厂隔音房 怎么可以封百度贴吧 贴吧怎么封吧 百度贴吧如何封吧 新唐书杜甫传译文 什么叫:仇注翻译 手机号码怎么在网上查到有几颗星星? 怎么样用手机打出特殊符号,比如’星星” 如何把卡上的号码复制到手机上星星二号 梦见将要离婚的媳妇在家吃饭 梦见河里无人船? 感冒了 晒太阳会不会好? 感冒了可以晒太阳吗 谁在天猫购买过索尼相机 想在京东买一个微单,但又担心是假货或翻新机 有谁在当当买过宾得k30 有什么赠品吗? 天猫 大有元亨数码专营店手机怎么样 买数码相机就到大有元亨数码专营店 京东的大有元亨数码旗舰店怎么样 爆笑:科学家说,不吃早饭就等于在吃粑粑!再也不敢不吃早饭了 不吃早餐是不是等于吃便便 宝贝宝贝儿歌歌词? 宝贝宝贝贝瓦儿歌歌曲歌词介绍? 手机是OPPO27内屏碎了,修一下得多少钱? 中国银行个人消费类贷款申请流程包括什么? 身份证要多久才能拿到?最快要几天 qq一个月前的最近联系人能找到么? QQ最近一个月未加好友的联系人删除了怎样找回 如何把苹果4手机里的电话号码彻底删除.一换卡,删除以前的通讯录。用360备份了的 苹果4s手机怎么清除通讯录 iOS14.7.1使用感受,14.8没来之前,或许是最值得养老的版本 Xs Max ios14.7.1个人使用体验 苹果iOS 14.7.1大翻车:多款iPhone频现无服务,解决方法看这里 自学有什么优缺点 自学大学文化有什么好处 怎样可以减小腿? 如何可以减小腿? 怎么才可以减小腿? 美团外卖商家版为什么更改不了菜品名字,显示一个小时后再更改? 现代农业的本质内涵 农业生产的实质及特点?考试题,谢谢帮忙