快速入门:如何在Redis上使用Spring Cache

抽丝剥茧 细说架构那些事——【优锐课】

你的Spring应用程序正在运行吗?好吧,你最好去缓存它!

Spring是Java编程语言的一种非常流行的应用程序框架,它使构建企业Java软件更加容易。从3.1版开始,Spring支持将缓存添加到现有的Spring应用程序中,以提高性能并减少响应时间。

Redis是一种开源的内存中数据结构存储,可用于构建NoSQL数据库。但是,Redis不包括对Java的常规支持或对Spring等应用程序框架的支持。

好消息是,你可以使用第三方Redis Java客户端(例如Redisson)来使用Spring和Redis进行缓存。Redisson与Spring框架完全兼容。在本文中,优锐课将讨论如何在Redis中使用Redisson进行缓存。

在Spring中缓存

Spring框架提供了一个缓存抽象层。在Spring中进行缓存的相关注释如下:

• @Cacheable:@Cacheable批注表示调用此方法的结果将被缓存。 如果再次使用相同的参数调用该方法,则将从缓存中检索结果,而不是调用该方法。
• @CachePut:@CachePut批注表示方法将触发缓存放置操作。
• @CacheEvict:@CacheEvict批注表示方法将触发缓存逐出操作。
• @EnableCaching:@EnableCaching批注启用Spring的内置缓存管理功能。
• @Caching:@Caching注释是用于多个缓存注释的组注释。
• @CacheConfig:@CacheConfig批注允许共享与缓存相关的常见设置,例如缓存名称和密钥生成器。

安装Redisson

安装Redisson非常简单。例如,如果你使用的是Maven,只需将以下依赖项添加到pom.xml文件中:

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.11.5</version>
</dependency>

Redisson中的缓存参数

Redisson中的每个Spring缓存都有两个重要的参数,以毫秒为单位指定:

• ttl:ttl(生存时间)参数确定高速缓存中对象的最大生存期。 缓存中的所有对象的生存时间到期后,无论请求的频率如何,都将删除它们。
• maxIdleTime:maxIdleTime参数确定两次请求对象之间可以经过的最长时间。如果这段时间没有请求,对象将从缓存中自动删除。此参数仅在Spring缓存的Redisson实现中存在。

如果这两个参数未定义或等于0,则将无限期存储高速缓存中的对象。

使用Spring和Redis进行缓存的示例代码

以下示例代码演示了如何使用Redisson在Spring和Redis中执行缓存。该代码利用了两个Spring bean:第一个用于创建和配置Redisson客户端,第二个用于设置和测试缓存。

@Configuration
@ComponentScan
@EnableCaching
public class Application {
    @Bean(destroyMethod="shutdown")
    RedissonClient redisson() {
        Config config = new Config();
        config.useSingleServer()
              .setAddress("redis://127.0.0.1:6379");
        return Redisson.create(config);
    }
    @Bean
    CacheManager cacheManager(RedissonClient redissonClient) {
        Map<String, CacheConfig> config = new HashMap<>();
        // create "testMap" spring cache with ttl = 24 minutes and maxIdleTime = 12 minutes
        config.put("testMap", new CacheConfig(24*60*1000, 12*60*1000));
        return new RedissonSpringCacheManager(redissonClient, config);
    }
}

结论

借助本地缓存的功能,Redisson允许你将基于Redis的Spring缓存的性能提高多达45倍,以进行读取操作。

在这里插入图片描述
加入Java学习资料交流qq群:907135806和我们一起探讨吧!有想要JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java学习资料、视频课程和学习路线的童鞋也可以加vx:ddmsiqi 领取啦,共同进步~

发布了32 篇原创文章 · 获赞 0 · 访问量 465
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览