浅谈项目的缓存使用

背景

以Spring boot 1.x为例,结合redis做数据缓存,下面将讲述Spring缓存与java对象缓存。

Spring缓存

@Cacheable方法,关于用法,网上已经有很多这样的例子,这里不展开了,主要要注意Spring boot 1.x与2.x的调用区别、统一命名格式的定义、默认使用JDK序列化还是JSON序列化。

  • JDK序列化:
    • 优点:反序列化不需指定类型
    • 缺点:速度慢、无序列化类型不能使用
  • JSON序列化(FastJSON/Jackson):
    • 优点:速度快、根据getter/setter进行处理所有类型通用
    • 缺点:反序列化需指定类型

所以,个人觉得JDK序列化更适合无严格性能要求的通用场景,而JSON序列化适用于性能要求较快的定制场景

注解在DAO层

通过注解到DAO层的增删改查,使得业务层不需要在做修改就能使用,不用动业务层的大量方法,逻辑清晰,缺点是存储的是POJO对象,每次请求都需要额外转换成VO对象。

注解在Service层(推荐)

在业务层上进行注解,必须声明哪些方法需要缓存,哪些方法需要清理缓存,由于业务层开发时频繁改动,维护起来很麻烦,优点是缓存的直接是经过业务逻辑处理后的结果,无需再进一步处理,速度较注解在DAO层上更高。

JAVA对象缓存

这种就是最原始的缓存方式,也是最快的,因为没有转换,通过直接存入到对象里来进行使用。要注意堆内存和栈内存的区别,也要注意并发带来的问题,比较适合数据量少的核心数据存储,毕竟核心数据一般不适宜存redis里。

 

 

你可能感兴趣的:(Java,Web,Cache,缓存)