浅谈项目的缓存使用

背景

以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里。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值