跳到主要内容

第十篇:使用Spring Cache集成Redis

SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程

Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 Redis),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种 annotation,即能够达到缓存方法的返回对象的效果。

特点

具备相当的好的灵活性,不仅能够使用 **SpEL(Spring Expression Language)**来定义缓存的 key 和各种 condition,还提供开箱即用的缓存临时存储方案,也支持和主流的专业缓存例如 EHCache、Redis、Guava 的集成。

  • 基于 annotation 即可使得现有代码支持缓存

  • 开箱即用 Out-Of-The-Box,不用安装和部署额外第三方组件即可使用缓存

  • 支持 Spring Express Language,能使用对象的任何属性或者方法来定义缓存的 key 和 condition

  • 支持 AspectJ,并通过其实现任何方法的缓存支持

  • 支持自定义 key 和自定义缓存管理者,具有相当的灵活性和扩展性

使用前后

下面针对Spring Cache使用前后给出了伪代码部分,具体中也许比这要更加复杂,但是Spring Cache都可以很好的应对

> 使用前

我们需要硬编码,如果切换Cache Client还需要修改代码,耦合度高,不易于维护

public String get(String key) {
String value = userMapper.selectById(key);
if (value != null) {
cache.put(key,value);
}
return value;
}

> 使用后

基于Spring Cache注解,缓存由开发者自己配置,但不用参与到具体编码