一般而言Redis在Java Web 應用中存在兩個主要的場景,一個是快取常用的數據,另一個是在需要高速讀/寫的場合使用它快速讀取/寫入,例如一些需要進行商品搶購和搶紅包的場合。
由於在高並發的情況下,需要對資料進行高速讀取/寫入的場景,一個最為核心的問題是資料一致性和存取控制。
快取 (建議學習:#Redis影片教學)
在資料庫的讀取/寫入作業中,現實的情況是操作中,現實的情況是操作讀取操作的次數遠遠超寫操作,通常是1:9 到3:7 的比例,所以需要讀的可能性是比寫的可能性多很多。
當傳送 SQL 去資料庫進行讀取時,資料庫就會去磁碟把對應的資料索引回來,而索引磁碟是一個相對緩慢的過程。如果把資料直接放在運行在記憶體中的 Redis 伺服器上,那麼不需要去讀/寫磁碟了,而是直接讀取內存,顯然速度會快得多,並且會極大地減輕資料庫的壓力。
而使用記憶體進行儲存資料開銷也是比較大的,因為磁碟可以是TGB 級別,而且十分廉價,記憶體一般是幾百個GB 就相當了不起了,所以記憶體雖然高效但空間有限,價格也比磁碟高許多,因此使用記憶體代價較高,並不是想存什麼就存什麼,因此我們應該考慮有條件的儲存資料。
一般而言,儲存一些常用的數據,例如使用者登入的資訊;一些主要的業務訊息,例如銀行會儲存一些客戶基礎資訊、銀行卡資訊、最近交易資訊等。一般而言在使用 Redis 儲存的時候,需要從 3 個方面來考慮。
業務資料常用嗎?命中率如何?如果命中率很低,就沒有必要寫入快取。該業務資料是讀取操作多,還是寫入操作多,如果寫入操作多,頻繁需要寫入資料庫,也沒有必要使用快取。業務資料大小如何?如果要儲存幾百兆位元組的文件,會對快取造成很大的壓力,有沒有必要?
在考慮這些問題後,如果覺得有必要使用緩存,那就使用它。使用 Redis 作為快取的讀取邏輯如圖 1 所示。
從圖 1 可以知道以下兩點。
當第一次讀取資料的時候,讀取 Redis 的資料就會失敗,此時會觸發程式讀取資料庫,把資料讀取出來,並且寫入 Redis。
當第二次及以後讀取資料時,就直接讀取 Redis,讀到資料後就結束了流程,這樣速度就大大提高了。
從上面的分析可知,大部分的操作是讀取操作,使用 Redis 應對讀取操作,速度就會十分迅速,同時也降低了對資料庫的依賴,大大降低了資料庫的負擔。
分析了讀取操作的邏輯後,以下再來分析寫入操作的流程,如圖 2 所示。
從流程可以看出,更新或寫入的操作,需要多個 Redis 的操作。如果業務資料寫次數遠大於讀取次數沒有必要使用 Redis。
如果是讀取次數遠大於寫次數,則使用 Redis 就有其價值了,因為寫入 Redis 雖然要消耗一定的代價,但是其效能良好,相對資料庫而言,幾乎可以忽略不計。
高速讀/寫場合
在網路的應用中,往往存在一些需要高速讀/寫的場合,例如商品的秒殺,搶紅包,淘寶、京東的雙十一活動或春運搶票等。
以上這類場合在一個瞬間成千上萬的請求就會達到伺服器,如果使用的是資料庫,一個瞬間資料庫就需要執行成千上萬的SQL,很容易造成資料庫的瓶頸,嚴重的會導致資料庫癱瘓,造成Java Web 系統服務崩潰。
在這樣的場合的應對辦法往往是考慮異步寫入資料庫,而在高速讀/寫的場合中單單使用Redis 去應對,把這些需要高速讀/寫的數據,緩存到Redis 中,而在滿足一定的條件下,觸發這些快取的資料寫入資料庫中。先看看一次請求操作的流程圖,如圖 3 所示。
以上是java web中一般用redis來做什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Redis的數據庫方法包括內存數據庫和鍵值存儲。 1)Redis將數據存儲在內存中,讀寫速度快。 2)它使用鍵值對存儲數據,支持複雜數據結構,如列表、集合、哈希表和有序集合,適用於緩存和NoSQL數據庫。

Redis是一個強大的數據庫解決方案,因為它提供了極速性能、豐富的數據結構、高可用性和擴展性、持久化能力以及廣泛的生態系統支持。 1)極速性能:Redis的數據存儲在內存中,讀寫速度極快,適合高並發和低延遲應用。 2)豐富的數據結構:支持多種數據類型,如列表、集合等,適用於多種場景。 3)高可用性和擴展性:支持主從復制和集群模式,實現高可用性和水平擴展。 4)持久化和數據安全:通過RDB和AOF兩種方式實現數據持久化,確保數據的完整性和可靠性。 5)廣泛的生態系統和社區支持:擁有龐大的生態系統和活躍社區,

Redis的關鍵特性包括速度、靈活性和豐富的數據結構支持。 1)速度:Redis作為內存數據庫,讀寫操作幾乎瞬時,適用於緩存和會話管理。 2)靈活性:支持多種數據結構,如字符串、列表、集合等,適用於復雜數據處理。 3)數據結構支持:提供字符串、列表、集合、哈希表等,適合不同業務需求。

Redis的核心功能是高性能的內存數據存儲和處理系統。 1)高速數據訪問:Redis將數據存儲在內存中,提供微秒級別的讀寫速度。 2)豐富的數據結構:支持字符串、列表、集合等,適應多種應用場景。 3)持久化:通過RDB和AOF方式將數據持久化到磁盤。 4)發布訂閱:可用於消息隊列或實時通信系統。

Redis支持多種數據結構,具體包括:1.字符串(String),適合存儲單一值數據;2.列表(List),適用於隊列和棧;3.集合(Set),用於存儲不重複數據;4.有序集合(SortedSet),適用於排行榜和優先級隊列;5.哈希表(Hash),適合存儲對像或結構化數據。

Redis計數器是一種使用Redis鍵值對存儲來實現計數操作的機制,包含以下步驟:創建計數器鍵、增加計數、減少計數、重置計數和獲取計數。 Redis計數器的優勢包括速度快、高並發、持久性和簡單易用。它可用於用戶訪問計數、實時指標跟踪、遊戲分數和排名以及訂單處理計數等場景。

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能