Redis—SpringCache(一)无参数使用

Redis—SpringCache(一)无参数使用

一.简介

Spring Cache 是Spring – context-xxx.jar中提供的功能,可以结合EHCache,Redis等缓存工具使用。给用户提供非常方便的缓存处理,缓存基本判断等操作,可以直接使用注解实现。

二.开启方式

在包含了Spring – context-xxx.jar的Spring Boot项目中,在启动类中添加@EnableCaching注解,即可开启缓存功能。默认Spring Cache是不开启。

三.SpringCache的优点

1.1正常情况下使用Redis缓存工具时代码流程:

在这里插入图片描述

1.2在使用SpringCache后

在代码方法中编写对数据库的访问。只需要完成上面流程图中“从mysql取出”部分的代码。剩余事情使用一个非常简单的注解即可,省略了访问redis取数据及把mysql数据缓存到redis的代码,让开发起来更简单。

2.SpringCache加载缓存工具顺序

只要检测到项目中配置了下面缓存工具。(导入了依赖,在Spring容器中发现对应工具的内容),无论导入多少个缓存工具用于只用最前面的一个。
1.Generic
2.JCache (JSR-107) (EhCache 3, Hazelcast, Infinispan, and others)
3.EhCache 2.x
4.Hazelcast
5.Infinispan
6.Couchbase
7.Redis
8.Caffeine
9.Simple

3.无参数使用

3.1在pom.xml中添加依赖

Spring-boot-starter-web和spring-boot-start-data-redis

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.7.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
</dependencies>

3.2新建配置文件

在application.yml中配置redis

spring:
  redis:
    host: 192.168.8.129

3.3新建启动类

@SpringBootApplication
@EnableCaching
public class DemoApplication {
   
    public static void main(String[] args) {
   
        SpringApplication.run(DemoApplication.class,args);
    }
}

3.4新建Service和实现类

3.4.1 每个方法单独配置key前缀

每个方法单独配置key前缀适用于整个类中方法的前缀不统一的情况。
@Cacheable表示要对方法返回值进行缓存。缓存时key的名称为
cacheNames : 配置key的前缀
key:配置key的后缀。里面字符串要使用单引号。
Spring Cache使用的RedisTemplate<StringRedisSerializer,JdkSerializationRedisSerializer>

public interface DemoService {
   
    String demo();
}
@Service
public class DemoServiceImpl implements DemoService {
   
    @Override
    // 固定字符串需要使用单引号
    @Cacheable(key = "'demo'",cacheNames = "com.yrp")
    public String demo() {
   
        System.out.println("demo方法被执行");
        return "demo-result";
    }
}
3.4.2 统一配置类中方法前缀

一般情况下一个类中方法的对应key的前缀都是一样,可以把前缀cacheNames提出到类上,统一配置。

public interface DemoService {
   
    String demo();
}
@Service
@CacheConfig(cacheNames = "com.bjsxt")
public class DemoServiceImpl implements DemoService {
   
    @Override
    // 固定字符串需要使用单引号
    @Cacheable(key = "'demo'")
    public String demo() {
   
        System.out.println("demo方法被执行");
        return "demo-result";
    }
}

3.5新建控制器

@Controller
public class DemoConteroller {
   
    @Autowired
    private DemoService demoService;
    @RequestMapping("/demo")
    @ResponseBody
    public String demo(){
   
        return demoService.demo();
    }
}

3.6测试结果

在浏览器中访问/demo后会发现控制台打印“demo方法被执行”,通过redis中出现com.bjsxt::demo的key
再次访问,控制台不会被打印,说明执行缓存。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2344.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • pycharm配置路径_如何在pycharm添加解释器

    pycharm配置路径_如何在pycharm添加解释器步骤一:pycharm–>settingforNewProjects步骤二:settingsforNewprojects–>projectInterpreter–>showAll–>Add

    2022年8月25日
  • 这是我见过最牛逼的接口自动化测试框架没有之一:基于python+requests+pytest+allure实现

    这是我见过最牛逼的接口自动化测试框架没有之一:基于python+requests+pytest+allure实现这里写自定义目录标题新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入众所周知,企业实现接口自动化最常用的就是两种:1.基于工具类的接口自动化,如:Postman+Newman+Jenkins+Git/svnJmet

    2022年7月26日
  • JAVA中StringBuilder学习

    JAVA中StringBuilder学习StringBuilder概述StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器。作用:提高字符串的操作效率。通过代码可以说明publicclassDemo1StringBuilder{publicstaticvoidmain(String[]args){longstart=System.currentTimeMillis();StringBuildersb=newStringBuilder();

    2022年7月17日
  • QT5 使用QCustomplot绘制频谱瀑布图并封快速傅里叶变换fft类

    QT5 使用QCustomplot绘制频谱瀑布图并封快速傅里叶变换fft类近期想要做个上位机显示SDR设备的信号频谱,频谱瀑布图展示最为直观,经过多方评估比较最后选择了QCustomsplot图形库,相比于其他选择比如修改RGB像素刷新图片来说这种方式要简单的多,先做了个demo出来试试效果,话不多说先上动图。下面介绍方方法:第一步,QT没有自带QCustomplot库需要自行下载,实际上就是一个qcustomplot.h和qcustomplot.cpp文件,添加进工程就可以了,不想下载的后面我会上传de…

    2022年10月16日
  • 就业更看重本科学历还是研究生学历(女孩没学历做什么工作好)

    前言我是一个普通本科出身的Android程序员,我的学校也不过就是一个普通二本。嗯,我的学弟学妹们也是一样的,都是普通二本。但是和我不同的是,现在的社会越来越浮躁了,浮躁的让人沉不下心认真做事,让人忍不住去想各种有的没的。比如我的这些学弟学妹们。我已经不止一次收到来自他们的私信了,他们问的内容,无一不是表达对自己学历的自卑和对即将离开学校的自己的不自信,还有对面试被拒的伤心。千篇一律的问题,基本内容如下:面试挂了,大厂面试到底更看重学历还是技术?我这样的学历在求职中有什么需要注意点的点吗?

    2022年4月13日
  • Js Date日期格式和字符串的相互转化「建议收藏」

    Js Date日期格式和字符串的相互转化「建议收藏」Date格式转字符串varnewDate=newDate();返回的Date格式:WedDec13201716:00:00GMT+0800(中国标准时间)而且是object类型的所需求的格式为2017-12-1316:00:00转换代码varformatDate=function(date){vary=date.getFullYear();

    2022年6月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号