有时,为了提升整个网站的性能,我们会将经常需要访问数据缓存起来,这样,在下次查询的时候,能快速的找到这些数据。
缓存的使用与系统的时效性有着非常大的关系。当我们的系统时效性要求不高时,则选择使用缓存是极好的。当系统要求的时效性比较高时,则并不适合用缓存。
本文,我们将演示如何通过集成 Redis 服务器来进行数据的缓存,以提高微服务的并发访问能力。
为啥我们需要缓存
在之前的文章中,我们已经介绍了如何使用 Spring Boot 来快速实现一个天气预报服务应用micro-weather-basic
(见 https://waylau.com/spring-boot-weather-report/)。通过该应用,能实现简单的天气查询。
天气数据接口,本身时效性不是很高,而且又因为是 Web 服务,在调用过程中,本身是存在延时的。所以,采用缓存,一方面可以有效减轻访问天气接口服务带来的延时问题,另一方面,也可以减轻天气接口的负担,提高并发访问量。
特别地,我们是使用的第三方免费的天气 API,这些 API 往往对用户的调用次数及频率有一定的限制。所以为了减轻天气 API 提供方的负荷,我们并不需要实时去调用其第三方接口。
在micro-weather-basic
的基础上,我们构建了一个micro-weather-redis
项目,作为示例。
开发环境
为了演示本例子,需要采用如下开发环境:
- JDK 8
- Gradle 4.0
- Spring Boot Web Starter 2.0.0.M4
- Apache HttpClient 4.5.3
- Spring Boot Data Redis Starter 2.0.0.M4
- Redis 3.2.100
项目配置
Spring Boot Data Redis 提供了 Spring Boot 对 Redis 的开箱即用的功能。在原有的依赖的基础上,添加 Spring Boot Data Redis Starter 的依赖。
// 依赖关系
dependencies {
//...
// 添加 Spring Boot Data Redis Starter 依赖
compile('org.springframework.boot:spring-boot-starter-data-redis')
//...
}
下载安装、运行 Redis
在 Linux 平台上安装 Redis 比较简单,可以参考官方文档来即可,详见https://github.com/antirez/redis。
而在 Windows 平台,微软特别为 Redis 制作了安装包,下载地址见 https://github.com/MicrosoftArchive/redis/releases。本书所使用的案例,也是基于该安装包来进行的。双击 redis-server.exe 文件,就能快速启动 Redis 服务器了。
安装后,Redis 默认运行在
""""""<>""<>""""""
"""""""""""""""""""""""<<>""""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""""""""""""""""""""""""""""<<>""""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""""""""""""""""""""""""""""<<>""""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>"""""""""""""""""""""""""""