SpringBoot使用Redis提升天氣預報應用的併發訪問能力
有時,為了提升整個網站的效能,我們會將經常需要訪問資料快取起來,這樣,在下次查詢的時候,能快速的找到這些資料。
快取的使用與系統的時效性有著非常大的關係。當我們的系統時效性要求不高時,則選擇使用快取是極好的。當系統要求的時效性比較高時,則並不適合用快取。
本文,我們將演示如何通過整合 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 預設執行在
""""""<>""<>""""""
"""""""""""""""""""""""<<>""""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""""""""""""""""""""""""""""<<>""""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""""""""""""""""""""""""""""<<>""""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>""""""""""""""""""""""""<<>"""""""""""""""""""""""""""
相關文章
- PHP利用Redis鎖解決併發訪問PHPRedis
- springboot 整合線上天氣預報Spring Boot
- [手寫系列]使用axios封裝一個天氣預報的package,併發布至NPMiOS封裝PackageNPM
- SpringBoot資料訪問(三) SpringBoot整合RedisSpring BootRedis
- 使用lua+redis解決發多張券的併發問題Redis
- Nginx併發訪問優化Nginx優化
- springboot應用查詢城市天氣Spring Boot
- Java併發:分散式應用限流 Redis + Lua 實踐Java分散式Redis
- Redis在.net中的使用(6)Redis併發鎖Redis
- 氣象資料隨時隨地:讓天氣預報API為您的應用提供精準的天氣資訊API
- 天氣預報apiAPI
- 求助:資料庫併發訪問問題資料庫
- 天氣預報查詢 API + AI 等於王炸(一大波天氣預報查詢 API 應用場景更新了)APIAI
- (二)物件以及變數的併發訪問--synchronized的使用細節,用法物件變數synchronized
- SpringBoot2.1版本的個人應用開發框架 - 使用SpringSecurity管理我們的訪問許可權1Spring Boot框架Gse訪問許可權
- SpringBoot2.1版本的個人應用開發框架 - 使用SpringSecurity管理我們的訪問許可權2Spring Boot框架Gse訪問許可權
- 伺服器高併發訪問下的配置問題伺服器
- flutter天氣預報APPFlutterAPP
- 天氣預報API介面API
- 天氣預報介面收集
- beego訪問redisGoRedis
- 開發chrome外掛入門-天氣預報Chrome
- JAVA架構-使用redis叢集輕鬆應對大併發Java架構Redis
- python訪問redis的問題PythonRedis
- WEB應用訪問緩慢的問題定位Web
- Redis快取穿透、快取雪崩、redis併發問題分析Redis快取穿透
- 天氣預報的功能實現(使用聚合的提供的外部介面)
- 提高SQL SERVER併發能力SQLServer
- kubernetes使用traefik的https方式訪問web應用HTTPWeb
- Tomcat應用報redis超時的故事TomcatRedis
- 求助 | 天氣預報資料採集,更新入庫的問題!
- 用雅虎天氣介面和AutoCompleteTextView開發天氣應用(1)TextView
- SpringBoot 實戰 (六) | 用 JdbcTemplates 訪問 MysqlSpring BootJDBCMySql
- [提問交流]請問windows上安裝並開發的ot,切換到ubuntu上訪問成空白,也不報錯。WindowsUbuntu
- react native天氣預報React Native
- Flutter實踐:天氣預報Flutter
- Delphi天氣預報查詢
- 天氣預報程式碼大全