设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间08 现在时间08 缓存数据 世界上没有永恒的懦弱,也没有永恒的坚强,万事靠自己,但是一定要放下懦弱,活的有尊严,活出你的坚强,才真正的体现你的自信和力量,你的活才更有价值!

世界上没有永恒的懦弱,也没有永恒的坚强,万事靠自己,但是一定要放下懦弱,活的有尊严,活出你的坚强,才真正的体现你的自信和力量,你的活才更有价值!

查看: 1000|回复: 1

SpringBoot 开启Redis缓存及使用方法

[复制链接]

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:15
  • 打卡月天数:0
  • 打卡总奖励:281
  • 最近打卡:2023-08-27 07:15:02
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
45
主题
35
精华
0
金钱
411
积分
90
注册时间
2023-8-13
最后登录
2025-5-31

发表于 2025-3-12 23:43:53 | 显示全部楼层 |阅读模式

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

Redis缓存

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

主要步骤

 1、pom.xml文件添加依赖

2、yml文件配置redis集群

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

4、编写业务Controller,添加缓存注解

5、编写启动类

具体实践

整体目录结构

pom.xml添加依赖



    4.0.0

    org.example
    SpringBoot_Redis
    1.0-SNAPSHOT

    
        1.8
    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.8.RELEASE
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.boot
            spring-boot-starter-data-redis
        
        
        
            org.springframework.boot
            spring-boot-starter-test
        
    

1.png

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

2.png

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

3.png

设置序列化的Bean

4.jpeg

设置缓存的Bean

5.jpeg

这里有必要解释一下

  • 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 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会在调用该方法之前清除缓存中的指定元素 编写启动类

就是传统的启动类

6.png

检验结果

使用postman发送请求进行检测
第一次的时候可以看到控制台打印

7.png

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

8.png

9.png

好了,到此结束。

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
11
积分
2
注册时间
2024-11-5
最后登录
2024-11-5

发表于 2025-4-2 07:30:17 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表