SpringCloud用Spring Cache的方式使用Redis缓存

SpringCloud用Spring Cache的方式使用Redis缓存

  • Spring Cache
  • 活动信息的缓存
    • (1)pom.xml中引入SpringDataRedis
    • (2)添加redis配置
    • (3)启动类添加@EnableCaching注解
    • (4)@Cacheable注解的用法
    • (5)@CacheEvict的用法

Spring Cache

Spring Cache使用方法与Spring对事务管理的配置相似。Spring Cache的核心就是对某个方法进行缓存,其实质就是缓存该方法的返回结果,并把方法参数和结果用键值对的方式存放到缓存中,当再次调用该方法使用相应的参数时,就会直接从缓存里面取出指定的结果进行返回。

常用注解:
@Cacheable-------使用这个注解的方法在执行后会缓存其返回结果。
@CacheEvict--------使用这个注解的方法在其执行前或执行后移除Spring Cache中的某些元素。

活动信息的缓存

活动详情的缓存实现
步骤:

(1)pom.xml中引入SpringDataRedis

我们在tensquare_gathering的pom.xml中引入SpringDataRedis;

        
            org.springframework.data
            spring-data-redis
        

        
            redis.clients
            jedis
            2.9.0
        

(2)添加redis配置

修改application.yml , 在spring节点下添加redis 配置;

  redis:
    host: 192.168.2.10
    port: 6379

(3)启动类添加@EnableCaching注解

为GatheringApplication添加@EnableCaching开启缓存支持;

package com.tensquare.gathering;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import util.IdWorker;
@SpringBootApplication
@EnableCaching
public class GatheringApplication {

	// com.tensquare.gathering.GatheringApplication
	public static void main(String[] args) {
		SpringApplication.run(GatheringApplication.class, args);
	}

	@Bean
	public IdWorker idWorkker(){
		return new IdWorker(1, 1);
	}
}

说明:启动类加上@EnableCaching注解,开启缓存支持;

(4)@Cacheable注解的用法

在GatheringService的findById方法添加缓存注解,这样当此方法第一次运行,在缓存中没有找到对应的value和key,则将查询结果放入缓存。

	/**
	 * 根据ID查询实体
	 * @param id
	 * @return
	 * @Cacheable 添加缓存 value属性表示缓存整体唯一标识,key属性标识缓存键值对中的key
	 */
	@Cacheable(value = "gathering",key = "#id")
	public Gathering findById(String id) {
		return gatheringDao.findById(id).get();
	}

(5)@CacheEvict的用法

当我们对数据进行删改的时候,需要更新缓存。其实更新缓存也就是清除缓存,因为清除缓存后,用户再次调用查询方法无法提取缓存会重新查找数据库中的记录并放入缓存。

	/**
	 * 修改
	 * @param gathering
	 */
	@CacheEvict(value = "gathering", key = "#gathering.id")
	public void update(Gathering gathering) {
		gatheringDao.save(gathering);
	}

	/**
	 * 删除
	 * @param id
	 */
	@CacheEvict(value = "gathering", key = "#gathering.id")
	public void deleteById(String id) {
		gatheringDao.deleteById(id);
	}

你可能感兴趣的:(【微服务】,【缓存】,【缓存/Redis】,【项目】,【微服务项目】)