Java后端学习日记(四):Springboot 2.X 整合Redis作为数据缓存

本文介绍了Springboot 2.X如何整合Redis作为数据缓存,详细讲解了安装Redis、配置依赖、设置缓存及单元测试等步骤。探讨了数据缓存的重要性,以及选择Redis的原因。此外,还提到了Redis缓存的雪崩、穿透和击穿问题及其解决方案。
摘要由CSDN通过智能技术生成

专栏目录

Java后端学习日记(一):第一个Springboot应用——Hello World!

Java后端学习日记(二):POJO的基本概念,编写,转化和简化

Java后端学习日记(三):Springboot整合Mybatis-Plus

Java后端学习日记(四):Springboot 2.X 整合Redis作为数据缓存

Java后端学习日记(五):Springboot使用@ControllerAdvice捕获和处理异常


项目源码同步更新中

前言

上一期中我们整合了Mybatis-Plus,对数据库进行CRUD,这一期我们来讲讲数据缓存

如果能用内存查找代替磁盘IO查找,那么效率就会高快几十到上百倍

常用的内存型数据库有Memcached,Redis和mongoDB,本文我们选择Redis进行整合

为什么需要数据缓存

作为一个服务端,用户访问服务端时,大部分的请求都是查找请求,而增删改只是小部分请求。如果因为查找请求而频繁地访问数据库,对数据库来说是一种重担:

  1. 从数据库获取数据是一种磁盘IO操作,速度较慢
  2. 查找请求量过大,容易引起数据库宕机

拿一个场景作为例子:

当电商举办活动,一个商品(假设商品id为3)热卖中,很多用户点击这个商品想要获取这个商品的信息,如果没有缓存的情况下,就会有大量的

# TB_COMMODITY 为商品表
SELECT * FROM TB_COMMODITY WHERE ID=3;

并发访问数据库,且不说磁盘IO效率低下,大量的连接请求会使数据库无力处理其它请求,造成数据库宕机

所以说数据缓存在面对大量用户请求的时候是必不可少的

为什么选用Redis

Redis 是当前互联网世界最为流行的 NoSQL(Not Only SQL)数据库。NoSQL 在互联网系统中的作用很大,因为它可以在很大程度上提高互联网系统的性能。
Redis 具备一定持久层的功能,也可以作为一种缓存工具。对于 NoSQL 数据库而言,作为持久层,它存储的数据是半结构化的,这就意味着计算机在读入内存中有更少的规则,读入速度更快。

Redis的更多介绍自行百度

Redis支持的数据结构众多,性能好,支持持久化,具有原子性(单线程),用户还多…总而言之,redis,yes!

初学Redis可以将Redis先当成一个外置的HashMap^_^,存储键值对

Springboot 2.X 整合 Redis

1. 安装 Redis

菜鸟教程

2. 在 pom.xml 中引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <!-- 排除lettuce -->
    <exclusions>
        <exclusion>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>

说明:Spring Boot starter(spring-boot-starter-data-redis)默认使用 lettuce。使用jedis时,需要排除该依赖关系,并包含Jedis。

3. 在 application.yml 中配置

#配置redis
spring:
	redis:
		host:localhost
		password:
		port:6379

Redis默认密码为空,如需配置密码,则将redis.conf 或Redis Windows的 redis.windows.conf中的# requirepass foobared这一行的井号去掉,再将foobared改为你要设置的密码即可

4. 配置RedisUtil工具类操作Redis

org.springframework.data.redis.core.RedisTemplate提供了丰富的api供程序员进行Redis的操作,但相对来说较为复杂,其中:

redisTemplate.opsForValue();//操作字符串

redisTemplate.opsForHash();//操作hash

redisTemplate.opsForList();//操作list

redisTemplate.opsForSet();//操作set

redisTemplate.opsForZSet()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值