Spring Boot2.0+Redis+Ehcache实现二级缓存
EHCache 本地缓存
Redis 分布式缓存(可以共享)
一级 Redis 二级Ehcache 当redis挂了 有备胎
反之:
先走本地,本地没有再走网络 尽量少走Redis 效率会高一些
Redis与数据库的区别:
相同点 都是需要进行网络连接
不同点 是存放的介质 内存 和 硬盘
数据库需要做IO操作 性能比直接操作内存效率要低
Ehchache
不需要走网络 直接从内存中获取
由于Ehchache容器限制,会持久化在硬盘上,
Redis+ehCache实现两级级缓存
spring boot中集成了spring cache,并有多种缓存方式的实现,如:Redis、Caffeine、JCache、EhCache等等。但如果只用一种缓存,要么会有较大的网络消耗(如Redis),要么就是内存占用太大(如Caffeine这种应用内存缓存)。在很多场景下,可以结合起来实现一、二级缓存的方式,能够很大程度提高应用的处理效率。
内容说明:
缓存、两级缓存
spring cache:主要包含spring cache定义的接口方法说明和注解中的属性说明
spring boot + spring cache:RedisCache实现中的缺陷
caffeine简介
spring boot + spring cache 实现两级缓存(redis + caffeine)
缓存、两级缓存
简单的理解,缓存就是将数据从读取较慢的介质上读取出来放到读取较快的介质上,如磁盘-->内存。平时我们会将数据存储到磁盘上,如:数据库。如果每次都从数据库里去读取,会因为磁盘本身的IO影响读取速度,所以就有了像redis这种的内存缓存。可以将数据读取出来放到内存里,这样当需要获取数据时,就能够直接从内存中拿到数据返回,能够很大程度的提高速度。但是一般redis是单独部署成集群,所以会有网络IO上的消耗,虽然与redis集群的链接已经有连接池这种工具,但是数据传输上也还是会有一定消耗。所以就有了应用内缓存,如:caffeine。当应用内缓存有符合条件的数据时,就可以直接使用,而不用通过网络到redis中去获取,这样就形成了两级缓存。应用内缓存叫做一级缓存,远程缓存(如redis)叫做二级缓存
过期问题:
一级缓存 过期 时间 比二级要短一些
目录结构:
实体类:
注意一定要 序列号
package com.toov5.entity;
import java.io.Serializable;
import lombok.Data;
@Data
public class Users implements Serializable{
private String name;
private Integer age;
}
controller层
package