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


相关推荐

  • TCP三次握手四次挥手(通俗易懂版)

    TCP三次握手四次挥手(通俗易懂版)TCP连接的建立(三次握手)最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。三次握手通俗理解:TCP客户端是男孩子,TCP服务器是女孩子,男孩子要追女孩子,首先要建立恋爱关系。需要一个建立恋爱关系的过程。男孩:我们可以恋爱吗?(客户端请求服务器建立连接)女孩:你想追我?想清楚了!(服务器要求客户端确认连接)男孩:没错,你就是我的梦…

    2022年6月22日
    26
  • react 中组件状态的一些理解

    react 中组件状态的一些理解

    2020年11月19日
    176
  • LaTeX中表格多行显示的最简单设置方法

    LaTeX中表格多行显示的最简单设置方法

    2021年12月14日
    48
  • 小白都可以操作2021版(Github的注册与使用,超详细)

    小白都可以操作2021版(Github的注册与使用,超详细)作为一个学习IT的人,学习一点开源的社区是必须的,下面我们就来说说,IT中最大的开源交友社区github。废话不多说来看看

    2022年7月16日
    23
  • 5V输入升压双节锂电管理芯片_锂电池升压电路

    5V输入升压双节锂电管理芯片_锂电池升压电路新推出的一款高效率、直流升压稳压电路GS3662D。输入电压范围可由最低3.7伏特到最高42伏特,输出电压3.7–42V可调整且内部MOS输出开关电流可高达2A,非常适合于数码便携产品电池供电,3G网络产品,数码相机,LCD液晶屏背光电路,太阳能照明路灯,网络通讯等产品的电压转换。GS3662D采用标准的SOP-8无铅封装,应用电路非常简单,外围器件极少。主营产品:锂电充电管理IC双节锂电8.4V单节锂电充电镊镉电池充电超低功耗鼠标升压ICDC-DC稳压IC车充IC车充方案…

    2022年10月7日
    0
  • 大整数相乘java_大整数乘法—java实现

    大整数相乘java_大整数乘法—java实现大整数相乘参考博客:https://blog.csdn.net/oh_maxy/article/details/10903929https://blog.csdn.net/u010867294/article/details/77482306大整数相乘,对于计算机来说,由于整数的范围存在限制,如果数值太大,则两个较大整数及其结果在表示时就将可能产生溢出。因此,对于两个大整数的乘法我们就需要将其转化…

    2022年6月2日
    30

发表回复

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

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