redis使用和注解缓存

redis简单使用

  1. 集成依赖
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. application.yml连接redis
spring:
  redis:
    host: localhost
    port: 6379
    database: 0
    jedis:
      pool:
        max-active: 8
        max-wait: 1ms
        max-idle: 4
        min-idle: 0
  cache:
    redis:
      time-to-live: 1800000 #设置缓存数据的过期时间
  1. 注入RedisTemplate
@Autowired
    private RedisTemplate redisTemplate;
  1. 配置RedisConfig类继承CachingConfigurerSupport防止在存入key的时候在redis中找不到key
@Configuration
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory connectionFactory){

        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        //若不这样做在存入'xiaoming'在Redis中无法把字符串存进去
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //redisTemplate.setValueSerializer(new StringRedisSerializer());

        redisTemplate.setConnectionFactory(connectionFactory);

        return redisTemplate;

    }
}
  1. 使用
 @PutMapping
    public R<String> update(@RequestBody DishDto dishDto){

        dishService.updateWithFlavor(dishDto);

        //清理redis缓存的菜品数据
//        Set keys = redisTemplate.keys("dish_*");
//        redisTemplate.delete(keys);

        String key="dish_"+dishDto.getCategoryId()+"_"+dishDto.getStatus();
        redisTemplate.delete(key);

        return R.success("修改成功");
    }

注解缓存

  1. 配置依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

  1. application.yml连接redis
spring:
  redis:
    host: localhost
    port: 6379
    database: 0
    jedis:
      pool:
        max-active: 8
        max-wait: 1ms
        max-idle: 4
        min-idle: 0
  cache:
    redis:
      time-to-live: 1800000 #设置缓存数据的过期时间
  1. 开启缓存注解功能,在启动类上
@Slf4j
@SpringBootApplication
@ServletComponentScan//扫描过滤器
@EnableTransactionManagement//开启事务支持
@EnableCaching//开启缓存注解功能
public class ReggieApplication {
   public static void main(String[] args) {
       SpringApplication.run(ReggieApplication.class,args);
       log.info("Project start running...");
   }
}
  1. 使用
 @PostMapping
    @CacheEvict(value = "setmealCache",allEntries = true)
    public R<String> save(@RequestBody SetmealDto setmealDto){
        log.info(setmealDto.toString());
        setmealService.saveWithDish(setmealDto);
        return R.success("添加成功");
    }
解释:cacheEvict表示在删除时删除缓存中的内容,value:从setmealCache缓存中删除,allEntries=true:删除缓存中所有内容
@Cacheable(value = "setmealCache",key = "#setmeal.categoryId+'_'+#setmeal.status")
    public R<List<Setmeal>> list(Setmeal setmeal){
        log.info(setmeal.toString());
        LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(setmeal.getCategoryId()!=null,Setmeal::getCategoryId,setmeal.getCategoryId());
        queryWrapper.eq(setmeal.getStatus()!=null,Setmeal::getStatus,setmeal.getStatus());
        queryWrapper.orderByDesc(Setmeal::getUpdateTime);
        List<Setmeal> setmealList = setmealService.list(queryWrapper);
        return R.success(setmealList);
    }
解释:Cacheable表示在运行完程序之后把参数保存在缓存中,value:给缓存起的名字,key:要取值的key,"#setmeal.categoryId+‘_’+#setmeal.status"为设置key的内容用#参数来动态取值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值