SpringBoot 开启Redis缓存及使用方法

 更新时间:2021年08月17日 08:45:08   作者:Dean_xiu  
用redis做缓存,是因为redis有着很优秀的读写能力,在集群下可以保证数据的高可用,那么今天通过本文给大家讲解下SpringBoot使用Redis的缓存的方法,感兴趣的朋友一起看看吧

之前不是说过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发送请求进行检测
第一次的时候可以看到控制台打印

在这里插入图片描述

这说明方法执行了
但是第二次发送相同请求的时候,可以看到拿到了数据,但是方法没有执行,说明缓存有用了

在这里插入图片描述
在这里插入图片描述

好了,到此结束。

到此这篇关于SpringBoot 开启Redis缓存的文章就介绍到这了,更多相关SpringBoot Redis缓存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot使用Redis作缓存使用入门教程

    springboot使用Redis作缓存使用入门教程

    这篇文章主要介绍了springboot使用Redis作缓存使用入门教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • Redis主从架构和高可用性实现过程

    Redis主从架构和高可用性实现过程

    本文详细介绍了使用Redis主从架构和Linux虚拟服务器(LVS)实现高可用性的方法,并回顾了最近完成的Redis集群迁移部署过程,主从架构通过复制数据来提高性能和数据冗余,而LVS用于实现负载均衡和故障切换,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • Redis 布隆过滤器的原理和实践教程

    Redis 布隆过滤器的原理和实践教程

    布隆过滤器适用于需要快速判断一个元素是否可能存在于集合中的场景,例如网络爬虫中的去重、缓存中的数据判断等,这篇文章主要介绍了Redis 布隆过滤器的原理和实践,需要的朋友可以参考下
    2024-02-02
  • Satoken+Redis实现短信登录、注册、鉴权功能

    Satoken+Redis实现短信登录、注册、鉴权功能

    这篇文章主要介绍了Satoken+Redis实现短信登录、注册、鉴权功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 面试分析分布式架构Redis热点key大Value解决方案

    面试分析分布式架构Redis热点key大Value解决方案

    这篇文章主要为大家介绍了分布式架构Redis热点key大Value解决方案,以及在面试中如果遇到这类问题的分析,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-03-03
  • 一文详解Redis中的持久化

    一文详解Redis中的持久化

    这篇文章主要介绍了一文详解Redis中的持久化,持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复
    2022-09-09
  • Redis如何正确关闭和开启持久化

    Redis如何正确关闭和开启持久化

    本文主要介绍了Redis如何正确关闭和开启持久化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 浅析对redis hashtable 的sizemask理解

    浅析对redis hashtable 的sizemask理解

    在 Redis 的哈希表实现中,index = hash & dict->ht[0].sizemask 是计算键值对应存储位置的核心操作,本文给大家介绍redis hashtable 的sizemask理解,感兴趣的朋友一起看看吧
    2025-03-03
  • Redis实现分布式队列浅析

    Redis实现分布式队列浅析

    Redis将数据存储在内存中,使得读写速度非常快,经常被用来做缓存系统,这里我们将redis用来做一个分布式的消息队列。这篇文章主要介绍了使用redis来作为消息队列,并且进行分布式主从配置,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2016-11-11
  • 5分钟教你docker安装启动redis全教程(全新方式)

    5分钟教你docker安装启动redis全教程(全新方式)

    今天,我来带大家使用一种全新的方式docker来安装redis,首先我们来了解一下什么是redis以及我们为什么要使用redis,以及它的优缺点,感兴趣的朋友跟随小编一起学习下吧
    2021-05-05

最新评论