缓存技术的使用

缓存(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简易缓存操作完成一致

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值