springboot的缓存和redis缓存,入门级别教程
一、springboot(如果没有配置)默认使用的是jvm缓存
1、Spring框架支持向应用程序透明地添加缓存。抽象的核心是将缓存应用于方法,从而根据缓存中可用的信息减少执行次数。缓存逻辑是透明地应用的,对调用者没有任何干扰。只要使用@EnableCaching注释启用了缓存支持,Spring Boot就会自动配置缓存基础结构。
2、在Spring Boot中,默认情况下,它会根据一定的顺序去侦测缓存提供者,包括Generic、JCache(JSR-107)、EhCache 2.x、Hazelcast、Infinispan、Redis、Guava和Simple等 如果探测不到用的则是它会默认使用SimpleCacheConfiguration,即使用ConcurrentMapCacheManager来实现缓存,这是一种基于JVM内存的缓存。
具体代码案例:
依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
MyMathService:
package dev.farhan.movies.cache;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;
@Component
public class MyMathService {
@Cacheable("piDecimals")
public int computePiDecimal(int precision) throws InterruptedException {
if (precision==2){
Thread.sleep(2000);
return 45;
}
Thread.sleep(2000);
return 23;
}
}
MyMathController类:
package dev.farhan.movies.controller;
import dev.farhan.movies.cache.MyMathService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyMathController {
@Autowired
MyMathService myMathService;
@GetMapping("/math")
public void getMath() throws InterruptedException {
System.out.println(myMathService.computePiDecimal(2));
System.out.println(myMathService.computePiDecimal(89));
}
}
结果:访问localhost:8080/math
就会发现,第一次响应用了4秒多

而第二次响应则是用了4毫秒,明显走了缓存

二、我们比较常用的是redis的缓存
缓存抽象并不提供实际的存储,而是依赖于org.springframework.cache.Cache和org.springframework.cache.CacheManager接口实现的抽象。
如果Redis可用且已配置,则自动配置RedisCacheManager。通过设置spring.cache,可以在启动时创建额外的缓存。cache-names属性和cache默认值可以通过spring.cache.redis配置。*属性。例如,下面的配置创建了cache1和cache2缓存,它们的生存时间为10分钟:
1、这里我们先配置一下redis
引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
第二步:配置文件:
spring:
data:
redis:
host: #主机ip
password:
cache:
type: redis
cache-names: "cache1,cache2"
redis:
time-to-live: "10m"
然后启动项目:并访问localhost:8080/math
观察redis里面:

刚好存了piDecimals 可以对上

至于存的内容,2和89,则是:它的参数

springboot的缓存和redis缓存,入门级别教程的更多相关文章
- SpringBoot学习笔记:Redis缓存
SpringBoot学习笔记:Redis缓存 关于Redis Redis是一个使用ANSI C语言编写的免费开源.支持网络.可基于内存亦可以持久化的日志型.键值数据库.其支持多种存储类型,包括Stri ...
- springboot(九) Cache缓存和Redis缓存
1. Cache缓存 1.1 缓存的概念&缓存注解 Cache 缓存接口,定义缓存操作.实现有:RedisCache.EhCacheCache.ConcurrentMapCache等 Cach ...
- SpringBoot学习笔记(10)-----SpringBoot中使用Redis/Mongodb和缓存Ehcache缓存和redis缓存
1. 使用Redis 在使用redis之前,首先要保证安装或有redis的服务器,接下就是引入redis依赖. pom.xml文件如下 <dependency> <groupId&g ...
- springboot(七).springboot整合jedis实现redis缓存
我们在使用springboot搭建微服务的时候,在很多时候还是需要redis的高速缓存来缓存一些数据,存储一些高频率访问的数据,如果直接使用redis的话又比较麻烦,在这里,我们使用jedis来实现r ...
- springboot中如何向redis缓存中存入数据
package com.hope;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jack ...
- Spring Cache 抽象(缓存抽象) Redis 缓存
积少成多 ---- 仅以此致敬和我一样在慢慢前进的人儿 相关内容: https://blog.51cto.com/14230003/2369413?source=dra ...
- 本地缓存,Redis缓存,数据库DB查询(结合代码分析)
问题背景 为什么要使用缓存?本地缓存/Redis缓存/数据库查询优先级? 一.为什么要使用缓存 原因:CPU的速度远远高于磁盘IO的速度问题:很多信息存在数据库当中的,每次查询数据库就是一次IO操作所 ...
- springboot注解方式使用redis缓存
引入依赖库 在pom中引入依赖库,如下 <dependency> <groupId>org.springframework.boot</groupId> <a ...
- Redis缓存穿透、缓存雪崩和缓存击穿理解
1.缓存穿透(不存在的商品访问数据造成压力) 缓存穿透,是指查询一个数据库一定不存在的数据.正常的使用缓存流程大致是,数据查询先进行缓存查询,如果key不存在或者key已经过期,再对数据库进行查询,并 ...
- 实例解读什么是Redis缓存穿透、缓存雪崩和缓存击穿
from:https://baijiahao.baidu.com/s?id=1619572269435584821&wfr=spider&for=pc Redis缓存的使用,极大的提升 ...
随机推荐
- 一种基于ChatGPT的高效吃瓜方式的探索和研究。
你好呀,我是歪歪. 最近掌握了一个新的吃瓜方式,我觉得还行,给大家简单分享一下. 事情说来就话长了,还得从最近的一次"工业革命"开始,也就是从超导材料说起. 8 月 1 日的时候 ...
- IDA函数特征识别自动签名
IDA函数特征识别自动签名 Vc6编译的有些无法识别一些库里面的函数 测试代码 #include <stdio.h> int main() { printf("123456\n& ...
- 通过替换dll实现后门功能的恶意代码
通过替换Kernel32.dll来实现的后门功能的恶意代码. 该恶意代码存在一个exe可执行文件和一个dll动态链接库,需要分别进行分析 一.待解决问题 这个恶意代码执行了什么功能? 通过什么方式实现 ...
- 国标GB28181视频平台EasyGBS视频监控平台无法播放,抓包返回ICMP排查过程
国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台,可实现的视频功能包括:实时监控直播.录像.检索与回看.语音对讲.云存储.告警.平台级联等功能.国 ...
- TCP的可靠性之道:确认重传和流量控制
TCP 全称为 Transmission Control Protocol(传输控制协议),是一种面向连接的.可靠的.基于字节流的传输层通信协议,其中可靠性是相对于其他传输协议的优势点.TCP 为了确 ...
- 番外1.ssh连接管理器
目录 本篇前瞻 项目背景 ssh连接管理器 优点 使用方式 配置 使用方法 快速开始 注意点 使用样例 本篇后记 本篇前瞻 学习完go语言基础的专栏,我们究竟写出怎么样的实用工具呢?我在github上 ...
- 轻松玩转70亿参数大模型!借助Walrus在AWS上部署Llama2
Llama 2 是 Meta 的下一代开源大语言模型.它是一系列经过预训练和微调的模型,参数范围从 70 亿到 700 亿个.Meta Llama 2 可免费用于研究和商业用途并且提供了一系列具有不同 ...
- 揭秘ChatGPT,如何打造自己的自定义指令
一.ChatGPT-0720更新 又在深夜,正要打开ChatGPT官网测试下pdf对话功能,发现ChatGPT又有更新.本次更新总结有2点: 1.对于Plus用户,GPT-4的使用限额从25条/3h提 ...
- 小红书获得小红书笔记详情 API 返回值说明
item_get_video-获得小红书笔记详情 注册开通 smallredbook.item_get_video 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以 ...
- 【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅
前言 缘由 博友的需求就是我最大的动力 博友一说话,本狗笑哈哈.博友要我写啥,我就写啥. 特来一篇关于SpringBoot接口返回结果及异常统一处理,虽说封不封装都能用,但咱后端也得给前端小姐姐留个好 ...