利用自定义注解加spring切面实现redis service层缓存。
功能:通过在service层上设置缓存可以将服务层的处理结果保存到redis上,这样的话第二次查询的时候可以直接从redis上取,加快查取速度。
优点:对于重复查取相同数据的接口可以明显加快速度,可以改善mysql的并发压力。
缺点:因为第二次的数据是从缓存上取得,数据已经是过期的了,数据正确性难以保证,下文的处理方式是给保存到redis上的key设置过期时间,过期后就继续从数据库查找数据,然后更新缓存,这样保证缓存上的数据更新;还有一个缺点就是缓存的命中率问题,此方法是将service层上的方法和参数作为redis的key值存储,第二次查取的时候必须要参数一致的时候才会命中缓存。
步骤:
1.建立自定义注解:自定义注解的功能是为spring的切面设置切入点,告诉程序要在哪里使用切面,本文例子为在service层的方法上加入自定义注解就可以实现自己实现的aop缓存。
自定义注解很简单,只要新建个Java文件,以下代码为建立@MyRedisCache的注解:
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
@Target({ElementTyp