缓存(cache) : 可以高速访问,用于临时存储的数据存储区
缓存应用
-
较短时间段内,对相同数据频繁读取的场合,将该数据存入缓存,从缓存中读取数据
-
shiro等安全框架, 每次路由获取用户权限的操作
(注意):缓存数据需要及时与源数据进行同步,当数据更新频繁时,缓存无法提高效率(多线程异常)
SpringBoot配置简易缓存(基于内存中并发映射)
引入依赖
<!--Spring 缓存配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<!--<version>版本号(springBoot 父节点中默认 可省略)</version>-->
</dependency>
在启动类上引入@EnableCaching 开启缓存的注解
@SpringBootApplication
@EnableCaching //开启缓存的注解
public class ScgcxxApplication{ //启动类
public static void main(String[] args) {
SpringApplication.run(ScgcxxApplication.class, args);
}
}
业务实现类中使用缓存注解----注解说明
@CacheConfig 类级别注解,设置共享缓存名称 (可被方法级别注解覆盖)
@Cacheable 方法级别注解,声明方法返回值为可缓存值,将返回值存入缓存,使用相同方法(参数也相同)调用时,直接从缓存中获取返回值 (key属性可以使用spring表达式 (内置对象 : 1 targetClass: 当前目标所属类名 ; 2 methodName:当前方法名 ; 3 #p0 第1个参数 , #p1 第2个参数 , #name 名称为name的参数))
@CachePut 方法级别注解,声明方法正常执行,并在执行后更新缓存(执行前不会检查缓存是否存在)
@CacheEvict 方法级别注解,声明方法正常执行,并在执行后清空指定Key的缓存 或 全部缓存
业务实现类中使用缓存注解----实际操作
//业务实现类 不要在意细节(类相关细节)
@Service
@Transactional
@CacheConfig(cacheNames="ProcessRawcloth")
public class ProcessRawclothServiceImpl implements ProcessRawclothService {
@Autowired
private ProcessRawclothDao processRawclothDao;
@Override
@Cacheable(key="targetClass+'.'+methodName+'('+#BusProcess+')'")
public List<Bus_Process> getBusProcessList(Bus_Process BusProcess) {
return processRawclothDao.getBusProcessList(BusProcess);
}
@Override
@CacheEvict(allEntries=true)
public void addBusProcess(Bus_Process BusProcess) {
processRawclothDao.addBusProcess(BusProcess);
}
@Override
@Cacheable(key="targetClass+'.'+methodName+'('+#process_id+')'")
public Bus_Process getBusProcessById(Integer process_id) {
return processRawclothDao.getBusProcessById(process_id);
}
@Override
@CacheEvict(allEntries=true)
public void updBusProcess(Bus_Process BusProcess) {
processRawclothDao.updBusProcess(BusProcess);
}
@Override
@CacheEvict(allEntries=true)
public void delBusProcessById(Integer process_id) {
processRawclothDao.delBusProcessById(process_id);
}
@Override
@CacheEvict(allEntries=true)
public void delBusProcessByIds(Integer[] process_ids) {
processRawclothDao.delBusProcessByIds(process_ids);
}
}
Redis缓存 : 本身是一个内存数据库,在应用中可以充当缓存
redis使用 : 安装完成后,cmd中切换到redis解压目录, 执行 redis-server-redis.windows.conf 启动 redis服务, 另开启cmd窗口,切换到redis解压目录,执行 redis-cli -h 127.0.0.1 -p 6379 进入redis, 设置redis缓存值 set key值 value值 , 获取redis缓存值 get key值 进行检查
SpringBoot引入Redis缓存设置
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<!--<version>版本号(springBoot 父节点中默认 可省略)</version>-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<!--<version>版本号(springBoot 父节点中默认 可省略)</version>-->
</dependency>
application.properties中进行配置
# Redis数据库索引(默认为0)
spring.redis.database=1
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空 可省略)
#spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=100
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=2
# 连接超时时间(毫秒)
spring.redis.timeout=15000
# 将spring中缓存类型设置为redis
spring.cache.type=redis
# 设置缓存有效时长
spring.cache.redis.time-to-live=6000000
在启动类中的注解操作 以及 业务实现中注解操作 与 SpringBoot简易缓存操作完全一致
与文章中SpringBoot简易缓存操作完成一致