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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 完全二叉树与满二叉树的区别(有图)[通俗易懂]

    完全二叉树与满二叉树的区别(有图)[通俗易懂]先看图:完全二叉树:设二叉树的深度为h,除第h层外,其它各层(1~h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边满二叉树:深度为k且有2^k-1个结点的二叉树称为满二叉树

    2022年7月13日
    24
  • c++ string类头文件_printf用什么头文件

    c++ string类头文件_printf用什么头文件1.string与cstring有什么区别是C++标准库头文件,包含了拟容器classstd::string的声明(不过classstring事实上只是basic_string的typedef),用于字符串操作。是C标准库头文件<string.h>的C++标准库版本,包含了C风格字符串(NUL即’\0’结尾字符串)相关的一些类型和函数的声明,例如strcmp、strchr、strstr等。和<string.h>的最大区别在于,其中声明的名称都是位于std命名空间中的,而不是后

    2025年11月2日
    5
  • 计算机网络之TCP/UDP协议详解[通俗易懂]

    计算机网络之TCP/UDP协议详解[通俗易懂]深度理解TCP/IP1.TCP基础知识1.1什么是TCP?1.2什么是TCP连接?1.3TCP协议段格式1.4TCP主要特点2.UDP基础知识2.1UDP是什么?2.2UDP的协议段格式2.3UDP的主要特点2.4UDP的缓冲区3.TCP和UDP区别总结4.TCP保证可靠的机制4.1重传机制(这里只说了超时重传)4.2滑动窗口4.3流量控制4.3拥塞控制1.TCP基础知识1.1什么是TCP?TCP是⾯向连接的、可靠的、面向字节流的传输层通信协议面向连接:只能一对一连接,

    2022年5月9日
    36
  • centos6.6关闭防火墙步骤「建议收藏」

    2019独角兽企业重金招聘Python工程师标准>>>…

    2022年4月16日
    61
  • 用python编写猴子吃桃问题_人工智能猴子摘香蕉

    用python编写猴子吃桃问题_人工智能猴子摘香蕉Java实现人工智能实验一,猴子摘香蕉,图形化展示

    2022年9月25日
    3
  • 算数平均数、中位数、众数和几何平均数[通俗易懂]

    算数平均数、中位数、众数和几何平均数[通俗易懂]文章目录算数平均数、中位数、众数和几何平均数算数平均数、中位数、众数和几何平均数统计数据时经常用到的几种数的比较:算数平均数中位数众数几何平均数英文名ArithmeticmeanMedianModeGeometricMean别称均值中值定义n个变量的和除以n。中位数是按顺序排列的一组数据中居于中间位置的数,即在这组数据中,有一半的…

    2025年12月15日
    5

发表回复

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

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