前语
SpringBoot Cache 是一个很好的缓存结构,能够兼容多种缓存完成,数据量较大的情况下,Redis 应该是最多被运用的。
本文重点介线程的几种状态绍 SpringBoot 和 Redis 整合运用的appreciate关键流程,并对其中的核心要点给出阐明,且附上相应的官方文档链接便于参阅。
增加 Maven 依靠
在项目 pom.xml缓存清理 中增加如下装备:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>${spring-boot.version}</version>
</dependency>
启用缓存
在项目 发动类 中增加如下注解:
@EnableCaching
装备缓缓存视频合并app存
装备 Redis 衔接信息
Redis 衔接redis面试题信息包含地址、端口、超时时多线程的运用场景间(秒)和衔接池等,能够根据需求选取若redistribute干装备即可。
在项目 application.yml 中增加如下装备:
spring:
redis:
host: ${host}
port: ${port}
timeout: 3000
lettuce:
pool:
enabled: true
max-active: 30
SpringBoot 默许使缓存视频兼并app用的 Redis 客户端是 lettuce,不是 Jedis。假如需求运用衔接池的线程数越多越好吗话,还需求多线程面试题额外增加一个 Maven 依靠:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>${commons-pool2.version}</version>
</dependency>
Redis 衔接装备特点参阅,留意特点线程和进程的差异是什么前缀为 spring.rappr线程数是什么oachedis.*。
装备缓存信息
Springredis分布式锁Boot 支apple撑多个不同称号的缓存,缓存称号需求预先配线redistribute程安全置,还能够指定缓存的过期缓存整理时刻。rediscover关于 Redis 而言,某个称号的缓存实际上就多线程是什么意思是 Redis 中一缓存整理个或多个以该称号为redis分布式锁前缀的 Key,缓存的过期时刻指的便是这部分 Key 的过期时刻。
在项redis数据结构目 application.yml 中approve增加如下装备:
spring:
cache:
cache-names: "cache1,cache2"
redis:
time-to-live: "10m"
缓存装备特点参阅,留意特点前缀为 spring.cache.redis.*。
默许情况下,所有缓存的过期时刻都线程安多线程编程全是相同的。假如需求rediscover对不同的缓存设置不同的过期时刻,能够appreciate自己扩展完成,参阅官方示例。
运用缓存
@Cacredis的五种数据类型heable
SappetitepringBoot Cache 能够帮助咱们自动缓存某个办法的结redis的五种数据类型redis集群果(返回值),运用时咱们只需求在办法上面增加注解 @Cacheable,并且指多线程的运用场景定缓存称号即可:
@Cacheable(cacheNames = {"cos::url"})
public String generatePresignedUrl(String name) {
return ...;
}
缓存称号为 cos::url,调用办法 generatePresignedUrlredis耐久化 时,SpringBoot Cache 会自动查看 Redis 中是否现已缓存过该办法的成果,假如现已缓存过,则直接多线程的完成方法运用缓存中多线程的成果返回,该办法不会履行;假如没有多线程是什么意思缓存过,会履行该办法获取成果,缓存成果之app缓存的视频在哪earance后再返回给调用appearance者。
Ca缓存英文ching多线程的运用场景
Key Generatio线程数越多越好吗n
Redis 查看或缓存成果时均需求一个 Key,SpringBoredis耐久化ot Cache 运用 缓存称号(CacheName,如:cos::url)和 参数值(P线程数是什么arameterValue,如:value1)生成 Key,规矩redis分布式锁如下:
- 假如办法没有参数,Key 为 C线程是什么意思acheName::SimpleKey [],即:cos:redis的五种数据类型:url::SiredistmpleKey [];
- 假如办法只有一个参数,Key 为 CacheName::ParameterValuapproache,即:cos::url::value1;
- 假如办法有两个或两个以上的参数,Key 为 CacheName::SimpleKey [ParameterValue1,ParameterValue2,…],即:cos::url::SimpleKey [value1,value2];
Defaappleult Key Generation
sync
syapprovenc 是注解 @Cacheable 的一个特点,值能够是 true 或 false:
假如 sync = false(默许),多线appearance程环境下调用方APP法 generatePresi缓存的视频在哪gnedUapp多线程并发中线程的状态earrl 时,Redis 没有缓存成果的情况下,办法可能会被履行屡次;
假如 sync = trredistue,Redis 没有缓存成果的情况下,办法 generateredis分布式锁PresignedUrl 只会被履行一次。
Conditional Caching
con多线程并发dappearanceition
conditio线线程池面试题程安全n缓存视频合并app 是注解 @appleCach线程数越多越好吗eable 的一个特点,它的值是一个 SpEL 表达式,表达式的计算成果能够是 true 或 false:
假如表达式的计算成果是 true,表示缓存办法成果;
假如表达缓存清理式的计算成果是 false,表示不缓存办法成果;
Conditional线程 Caching
SpEL 表达式能够运用办法的参数值,多线程应用场景例子也能够调用该办法地点 Bean 的其它办法,如:
#name.length() < 32
办法参数 name 的参数线程和进程的差异是什么值长度小于 32 时,办法成果才会被缓存;
condition = "#root.target.check(#name)"
check() 有必要是公开的(public),且返回值有必要是布尔类型(B多线程是什么oole缓存视频怎样转入相册an);只有 check() 返回值为 t多线程面试题ru线程撕裂者e 时,办法成果才会被缓存。
Available Cachi缓存清理ng SpEL Evaluation Context
运用缓存英文限制
假如多线程并发中线程的状态办法 generatePresignedUrl 被坐落一个 Bean 的appointment其它办法调用时,缓存不会收效;也便是说,办法 gapproveeneratePresignedUrl 有必要被其它 Bean 的办法调用时,缓存才会收效。原因主要是和 Sprin多线程是什么g 的代理机制有关,详情可redis耐久化以参阅:Spring Credis耐久化ache @Cacheable – not线程 working whi缓存视频兼并apple calling from another method of多线程是什么意思 the same bean。
SpringBoot Cach缓存视频合并e 还支撑其它注解,能够参阅 D多线程并多线程是什么发eclarativ多线程是什么意思e Annotation-based Caching。
Rediredis数据结构sTemplate
假如咱们需求线程数越多越好吗自己完成redisRedis集群缓存逻辑,SpringBoot Cache 供给了一个封装 Redis 常用操作的工具线程是什么意思模板类:RedisTemplate,并且会创建好它的实例,运用时直接线程和进程的差异是什么注入即可:
@Autowired
private StringRedisTemplate template;
@Autowired
private RedisTemplate<String, String> template2;
@Autowired
private RedisTemplate<String, Integer> template3;
RedisTemplate 支撑泛型,咱们能够根据自己的需求注入一个或多个redis的五种数据类型实例;假如键值的类型都是 Str多线程运用场景比如ing,能够直接运用 StringRedisTemplate。
结语
SpringBoot 整合 Redis 运用时,假如仅仅是需求读取或缓存数据,直接运用注解的方redis面试题法相较于运用 ReRedisdisTemplate 的方法,能够避免大量的缓存冗余代码,更多地关注业务逻辑;但是缺陷也比较明显,操缓存视频怎样转入相册控性比较差。实际运用时,能够灵活结合两者,优先运用注applicationapprove解方法;注解方法受限时,再结appetite合 RedisTemplatappetitee 作为补充。