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
再次访问,控制台不会被打印,说明执行缓存。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Unity3D Invoke 方法的调用

    Unity3D Invoke 方法的调用Invoke()方法是Unity3D的一种委托机制如:Invoke(“SendMsg”,5); 它的意思是:5秒之后调用SendMsg()方法;使用Invoke()方法需要注意3点:1:它应该在脚本的生命周期里的(Start、Update、OnGUI、FixedUpdate、LateUpdate)中被调用;2:Invoke();不能接受含有参数的方

  • 解决Symantec卸载需要密码问题又一新招

    解决Symantec卸载需要密码问题又一新招今天在同事哪里学到卸载SYMANTEC需要密码又一新招,看图就知道了,对!就是修改注册表,在LOCAL_MACHINE—SOFTWARE—SYMANTEC—SYMANTECENDPOINTPRTECTION—SECURITY找到UseVPUninstallPassword键值,修心DWORD值,看图就知道了哈,说多了废话.我这里是SEP注册表…

  • Qt Quick实现的涂鸦程序

    Qt Quick实现的涂鸦程序

  • php 中instanceof的使用

    php 中instanceof的使用

  • pycharm配置tensorflow环境_pycharm run configuration

    pycharm配置tensorflow环境_pycharm run configuration先要安装Pylint:我用的python3pip3installpylintpip3installflake8进入PyCharm,从菜单栏,依次进入:File->Settings->Tools->ExternalTools。“+”,进行添加。需要填写的部分分别是:“Name”,“ToolSettings->Programs”、“To…

  • 思维导图整理大厂面试高频数组26: 合并区间中详解lambada表达式和toArray()用法, 力扣56

    思维导图整理大厂面试高频数组26: 合并区间中详解lambada表达式和toArray()用法, 力扣56此专栏文章是对力扣上算法题目各种方法的总结和归纳,整理出最重要的思路和知识重点并以思维导图形式呈现,当然也会加上我对导图的详解.目的是为了更方便快捷的记忆和回忆算法重点(不用每次都重复看题解),毕竟算法不是做了一遍就能完全记住的.所以本文适合已经知道解题思路和方法,想进一步加强理解和记忆的朋友,并不适合第一次接触此题的朋友(可以根据题号先去力扣看看官方题解,然后再看本文内容).关于本专栏所有题目的目录链接,刷算法题目的顺序/注意点/技巧,以及思维导图源文件问题请点击此链接.想进大厂.

发表回复

您的电子邮箱地址不会被公开。

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