SpringBoot 开启Redis缓存

article/2025/9/22 14:22:17

文章目录

    • Redis缓存
    • 主要步骤
    • 具体实践
      • 整体目录结构
      • pom.xml添加依赖
      • yml文件里配置Redis集群
      • 编写RedisConfig配置序列化及缓存配置,添加缓存注解
      • 编写业务Controller
      • 编写启动类
    • 检验结果

之前不是说过Redis可以当作缓存用嘛
现在我们就配置一下SpringBoot使用Redis的缓存

Redis缓存

为什么用Redis作缓存
用redis做缓存,是因为redis有着很优秀的读写能力,在集群下可以保证数据的高可用

主要步骤

  • 1、pom.xml文件添加依赖
  • 2、yml文件配置redis集群
  • 3、编写RedisConfig配置序列化及缓存配置,添加缓存注解
  • 4、编写业务Controller,添加缓存注解
  • 5、编写启动类

具体实践

整体目录结构

在这里插入图片描述

pom.xml添加依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>SpringBoot_Redis</artifactId><version>1.0-SNAPSHOT</version><properties><java.version>1.8</java.version></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.8.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--整合redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--spring boot test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies></project>

在这里插入图片描述

yml文件里配置Redis集群

结构是ip+port

spring:redis:cluster:nodes:- 169.254.0.100:8001- 169.254.0.100:8002- 169.254.0.100:8003- 169.254.0.100:8004- 169.254.0.100:8005- 169.254.0.100:8006

在这里插入图片描述

编写RedisConfig配置序列化及缓存配置,添加缓存注解

在这里插入图片描述
设置序列化的Bean
在这里插入图片描述

设置缓存的Bean
在这里插入图片描述
这里有必要解释一下

  • cacheNames.add() 这里我理解的是和controller进行绑定,毕竟很多controller的时候,这里可以确定到底那个controller开启缓存,以及每个controller对缓存的要求可能也不一样
  • configMap这里就是将我们对缓存的一些配置和命名空间进行关联
  • 设置缓存时间和禁止缓存空数据应该还好理解

编写业务Controller

@RestController
@RequestMapping("user")
public class RedisCacheController {@Cacheable(value = "user",key = "#root.methodName+#root.args[0]")@GetMapping("findWord/{id}")public String findWord(@PathVariable String id) {System.out.println("Cacheing");HashMap<String, String> words = new HashMap<>();words.put("1", "java");words.put("2", "redis");words.put("3", "cache");return words.get(id);}
}

@Cacheable一定要加在方法之上
value就是之前在RedisConfig中定义的命名空间,也是缓存保存的空间
key就是缓存保存的key,这里以方法名为key,但是为避免方法名重复导致的key重复,所以加入id,来避免重复

关于缓存的其他注解

  • @CachePut
    在支持Spring Cache的环境中,对于使用@Cacheale标注的方法,Spring在每次执行前都会检查Cache中是否存在相同的key的缓存元素,如果存在就不再执行该方法,而是从缓存中获取结果直接进行返回,若不存在才会执行方法并将返回结果存入指定的缓存中
    @Cacheput也可以生命一个方法支持缓存功能,与@Cacheable不同的是使用@CachePut标注的方法在执行并不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入缓存中。
  • @CacheEvict
    CacheEvict是用来标注在需要清除缓存元素的方法或类上的。
    当标记在一个类上时表示其中所有的方法的执行都会触发缓存的清除操作
    @CacheEvict可以指定的属性有value、key、condition、allEntries和beforeInvocation。
    其中value、key和condition的语义与@Cacheable对应的属性类似。即value表示清除操作是发生在哪些缓存(命名空间)上的
    key表示要清除的是哪个key,如未指定则会谁用默认策略生成的key,condition表示清除操作发生的条件
    allEntries属性
    allEntries是boolean类型的,表示是否要清除缓存中的所有元素,默认为false,当指定为true时,会忽略指定的key
    beforeInvocation属性
    清除操作默认时在对应方法成功执行后触发的,即方法如果因为抛出异常而未能成功返回也不会触发清除操作
    使用beforeInvocation可以改变触发清除操作的时间,当我们指定属性值为true时,Spring会在调用该方法之前清除缓存中的指定元素

编写启动类

就是传统的启动类
在这里插入图片描述

检验结果

使用postman发送请求进行检测
第一次的时候可以看到控制台打印
在这里插入图片描述
这说明方法执行了
但是第二次发送相同请求的时候,可以看到拿到了数据,但是方法没有执行,说明缓存有用了
在这里插入图片描述
在这里插入图片描述

好了,到此结束。


http://chatgpt.dhexx.cn/article/JCy4WwZi.shtml

相关文章

Windows下清理redis缓存

Windows下清理某个redis库的所有数据 1、找到redis的安装目录 2、找到redis-cli.exe&#xff0c;双击运行 3、登录redis&#xff1a;输入命令&#xff1a;auth 密码 4、登录成功&#xff1a;当前默认为数据库0 5、切换数据库&#xff1a;select 1/2/3&#xff08;切换数据库为…

redis缓存穿透

ps:想只读有效信息&#xff0c;见红字 正常情况 当在高并发&#xff0c;高性能&#xff0c;降低数据库压力的情况下&#xff0c;首先会选择redis作为缓存机制&#xff0c;当有大量请求需要查询数据库时&#xff0c;为了降低数据库的压力&#xff0c;并提高请求查询性能&#…

linux下清理redis缓存

输入命令&#xff0c;连接到redis 服务端 redis-cli -h 127.0.0.1 -p 6379#不用切换到redis的bin下面&#xff0c; 是因为安装redis 时已经配置了系统变量验证登录密码&#xff0c; auth 你的redis密码 开始清理缓存&#xff0c;清理命令如下 指定redis片区&#xff1a; selec…

redis缓存命中率

登录redis服务器 输入 redis-cli 链接到redis之后&#xff0c;输入info 则会打印 通过计算hits和miss&#xff0c;我们可以得到缓存的命中率&#xff1a;111207/ (111207 50181) 68.9% &#xff0c;一个缓存失效机制&#xff0c;和过期时间设计良好的系统&#xff0c;命中率…

命令行清除Redis缓存

一、打开命令行窗口 打开Redis安装目录下的《 redis-li.exe 》。 二、授权 在打开的命令行里直接操作会提示没有权限&#xff0c;需要先使用auth命令授权&#xff0c;使用方法如下。 auth ‘这里是Redis密码’ 三、清除缓存 清除缓存有两种方式&#xff1a;清除数据库缓存、清…

Redis缓存预热

概述 在秒杀开始前通常要进行将数据加载到缓存中&#xff0c;也叫缓存预热 demo Redis序列化配置&#xff0c;通常有两种方式&#xff0c;通过配置类进行序列化配置&#xff0c; Configuration public class RedisConfig {Autowiredprivate RedisConnectionFactory factory…

redis缓存失效问题

什么是缓存穿透&#xff1f;什么是缓存击穿&#xff1f;什么是缓存雪崩&#xff1f; 一个正常的访问流程&#xff1a; 1.缓存雪崩&#xff1a;redis缓存key同一时间大量失效&#xff0c;导致大量请求全部打到数据库&#xff0c;造成数据库挂掉。 如图&#xff1a; 缓存雪崩…

Redis缓存雪崩及解决办法

缓存雪崩 1.缓存雪崩是指在同- -时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到 达数据库&#xff0c;带来巨大压力。 2.解决方案: ◆给不同的Key的TTL添加随机值 ◆利用Redis集群提高服务的可用性 ◆给缓存业务添加降级限流策略 降级可做为系统的保底…

Redis缓存注解

本篇博客将详细讲解Cacheable,CachePut , CacheEvict使用&#xff0c;希望对大家有所帮助。 1、Cacheable 作用是主要针对方法配置&#xff0c;能够根据方法的请求参数对其结果进行缓存 参数解释examplevalue缓存的名称&#xff0c;在 spring 配置文件中定义&#xff0c;必…

Redis缓存的工作机制

Redis:缓存的工作机制 Redis缓存的工作机制缓存的特征Redis缓存处理请求Redis作为旁路缓存Redis中缓存的类型只读缓存读写缓存 参考文献 Redis缓存的工作机制 Redis具有高性能的数据存取特性&#xff0c;广泛的应用于缓存场景&#xff0c;在提升业务应用响应速度的同时&#xf…

Redis缓存击穿,缓存穿透,缓存雪崩,附解决方案

前言 在日常的项目中&#xff0c;缓存的使用场景是比较多的。缓存是分布式系统中的重要组件&#xff0c;主要解决在高并发、大数据场景下&#xff0c;热点数据访问的性能问题&#xff0c;提高性能的数据快速访问。本文以Redis作为缓存时&#xff0c;针对常见的缓存击穿、缓存穿…

Redis缓存应用场景解析

Redis的应用场景非常广泛。虽然Redis是一个key-value的内存数据库&#xff0c;但在实际场景中&#xff0c;Redis经常被作为缓存来使用&#xff0c;如面对数据高并发的读写、海量数据的读写等。 举个例子&#xff0c;A网站首页一天有100万人访问&#xff0c;其中有一个“积分商…

Redis缓存三大问题

缓存三大问题 ​ 我们都知道&#xff0c;Redis的Key都存在一个ttl(time to live)过期时间&#xff0c;Redis默认的是永不过期。Redis作为缓存&#xff0c;一方面可以提升速度&#xff0c;但也会带来三大常见的缓存问题&#xff1a;缓存穿透、缓存击穿和缓存雪崩。 ​ Redis作…

Redis缓存

Redis 一、Redis简介 一般为了提升性能&#xff0c;会在存储层和客户端之间添加一个缓存层&#xff0c;当客户端向后端发送请求的时候&#xff0c;会先去缓存层查&#xff0c;看看是否有相应的数据&#xff0c;如果有则直接返回&#xff0c;这样就减轻存储层的压力&#xff0c…

【Redis缓存】

一、使用Redis缓存的优点 相比于数据库而言&#xff0c;缓存的操作性能更高&#xff0c;缓存性能高的主要原因有以下几点&#xff1a; 1、缓存一般都是key-value查询数据的&#xff0c;因为不像数据库一样还有查询的条件等因素&#xff0c;所以查询的性能一般会比数据库高&am…

Redis缓存机制(详解)

1.Redis 是什么? *redis是*一个运行在内存上的key-value存储系统。是NoSQL数据库之一 2.缓存穿透,缓存击穿,缓存雪崩 /**缓存穿透*/ 它会先查询Redis,Redis没有会查询数据库,数据库也没有这就是缓存穿透 业界主流解决方案:布隆过滤器布隆过滤器的使用步骤 布隆过滤器的使用步…

如何使用 Redis 缓存?

​ 编辑 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 如何使用 Redis 缓存 前言 对于 Redis 来讲&#xff0c;作为缓存使用&#xff0c;是我们在业务中经常使用的&#xff0c;这里总结下&#xff0c;Redis 作为缓存在业务中的使用。 旁路缓存 Cach…

Redis实战——缓存

目录 1 前言 1.1什么是缓存&#xff1f; 1.2 缓存的作用及成本 1.3 Redis缓存模型 2 给商户信息添加缓存 3 缓存更新策略 3.1 更新策略介绍 3.2 主动更新策略 3.3 主动更新策略练习 4 缓存穿透及其解决方案 4.1 缓存穿透的概念 4.2 解决方案及实现 5 缓存雪崩的…

SpringBoot整合Redis缓存

SpringBoot整合Redis缓存 一、缓存概念知识1、是什么缓存2、缓存的优缺点3、为什么使用缓存 二、Redis概念知识1、Redis简介2、为什么用Redis作为缓存3、Redis 支持的数据类型4、Redis缓存常见问题1. 缓存穿透2. 缓存击穿3. 缓存雪崩4. 缓存一致性 三、SpringBoot整合redis1、使…

云平台的层次架构

云计算平台 ​ 云计算是一种资源的服务模式&#xff0c;该模式可以实现随时随地、便捷按需地从可配置计算资源共享池中获取所需的资源(如网络、服务器、存储、应用及服务)&#xff0c;资源能够快速供应并释放&#xff0c;大大减少了资源管理工作开销。 ​ 经典云计算架构包括…