使用redis快取的實踐總結

2021-06-17 15:45:54 字數 695 閱讀 9005

使用場景一:高頻率使用但不頻繁更新的業務資料。由於不頻繁更新,所以可以在系統啟動時,從資料庫中載入,放入redis。如果更新,需重啟服務,當然這比較笨。更好的做法下面會列出。

使用場景二:高頻率使用更新還算頻繁的業務資料。由於有一定頻率的更新,所以可以在使用者訪問時,查詢快取,如果沒有值,則從資料庫中加載入redis,並設定過期時間。這樣,過期時間內的訪問就都走快取了。這種策略也有問題,就是大併發訪問時,容易造成資料庫瞬間高併發讀,如果程式再寫的爛點,查詢語句再複雜點,那可能造成資料庫死鎖。更好的辦法,下面列出。

使用場景三:高頻率使用高頻率更新的業務資料。這種資料就需要在寫入資料庫的同時放入快取,不設定過期時間,這樣使用者每次訪問都走快取。為了保證資料的一致,還有資料對記憶體的占用,還需要有一些額外的策略。

對於場景一:更好的做法是在系統啟動的同時,利用redis的pub/sub功能,啟動乙個監聽通道。當資料發生更新時,往通道publish乙個訊息,系統接收到訊息後,重新從資料庫中載入資料,放入快取。這樣系統實現了無中斷的更新快取。

對於場景二:更好的做法是單獨啟動乙個定時任務,把定時任務看做是乙個使用者,他每隔一段時間從資料庫中讀取資料,然後放入快取。而前台使用者訪問的始終是快取資料,不會觸發資料庫的相關操作。這個策略也可以用在場景一中。

redis快取使用

compile group org.springframework.boot name spring boot starter data redis version 2.3.2.release spring 主要引數 redis host localhost port 6379 passport 預...

快取Redis使用

在 redis 中有五種資料型別 redis 內部使用乙個 redisobject 物件來表示所有的 key 和 value。redis 記憶體淘汰指的是使用者儲存的一些鍵被可以被 redis 主動地從例項中刪除,從而產生讀 miss 的情況,那麼 redis 為什麼要有這種功能?這就是我們需要 的...

面試總結 快取Redis

以下是面試以來被問到過的題,當然也包括一些沒被問的題,有備無患。redis跳表 鍊錶加上多級索引的結構,稱為跳表,應用在redis zset資料結構當中。zset要求資料唯一有序,且支援插入刪除。實現跳表包含zskiplistnode和skiplist兩個結構定義。zskiplistnode表示跳表...