SpringBoot采用拦截器进行redis缓存命中(自定义注解+拦截器+向redis中加数据)

实现思路:

  • 通过拦截器实现对请求的拦截,在拦截器中实现缓存的命中。
  • 通过ResponseBodyAdvice进行对响应的拦截,可以将数据缓存到Redis中。
  • 考虑到,不能对于所有的请求都一刀切,所以需要创建@Cache注解进行标记,只有标记的Controller才进行缓存处理。
  • 缓存的处理中,仅针对GET请求处理,其他的请求均不做处理。
    SpringBoot采用拦截器进行redis缓存命中(自定义注解+拦截器+向redis中加数据)_第1张图片

第一步:

自定义注解

package com.tanhua.server.utils;
import java.lang.annotation.*;

@Target(ElementType.METHOD)//表明注解表示在方法上还是类上此处在方法上
@Documented//注解标识说明他是一个注解
@Retention(RetentionPolicy.RUNTIME)//表示注解的有效时间
public @interface Cache {
   

    //默认缓存时间
    String time() default "60";
}

第二步:

编写配置文件:application.properties:
#是否开启数据缓存

tanhua.cache.enable=false

 Redis相关配置

spring.redis.jedis.pool.max-wait = 5000ms
spring.redis.jedis.pool.max-Idle = 100
spring.redis.jedis.pool.min-Idle = 10
spring.redis.timeout = 10s
spring.redis.cluster.nodes = 192.168.31.81:6379,192.168.31.81:6380,192.168.31.81:6381
spring.redis.cluster.max-redirects=5

第三步:

编写拦截器:RedisCacheInterceptor。

package com.tanhua.server.interceptor;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import com.tanhua.common.utils.Cache;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework

你可能感兴趣的:(redis,spring,interceptor)