缓存是解决互联网大流量常用的性能提升方式之一,也是最常被问到的问题。缓存又多种多样,像Java的内存缓存就有Guava Cache、Ehcache、Caffeine等等;像远程存储缓存(需要独立部署)常用的有Memcached、Redis等等。
已知缓存可以提升系统性能,那么适合什么场景?
- 商品详情页
- 购物车
- 优惠券
- 促销活动
- 等等...
不同的场景都有各自的缓存策略,最最常见的就是先查询缓存,如果缓存未命中,再查询数据库,最后将数据库的数据添加到缓存中,以Redis缓存为例,代码:
@Autowired
RedisTemplate<Long,String> redisTemplate;
public String getName(Long id){
String name = redisTemplate.opsForValue().get(id);
if(name == null){
name = dao.getNameById(id);
redisTemplate.opsForValue().setIfAbsent(id,name,30, TimeUnit.SECONDS);
}
return name;
}
相信大家这样的代码都不陌生,向大家推荐一个极其简单、好用的缓存组件AutoCache组件,只需要这样:
@AutoCache(remoteTTL = 30)
public String getName(Long id){
return dao.getNameById(id);
}
为应对更多场景,还支持二级缓存,也非常简单。
@AutoCache(localTTL = 5, remoteTTL = 30)
public String getName(Long id) {
return dao.getNameById(id);
}
配置添加Maven
即可
<dependency>
<groupId>io.github.haozi2015</groupId>
<artifactId>autocache-spring-boot-starter</artifactId>
<version>1.0.4</version>
</dependency>
更多功能,请关注作者haozi2015。
网友评论