使用本地緩存快還是使用redis緩存好?
Redis早已家喻戶曉,其性能自不必多說。
但是總有些時候,我們想把性能再提升一點,想着redis是個遠程服務,性能也許不夠,於是想用本地緩存試試!想法是不錯的。那么就讓我們來比較下二者的差別吧!
- 讀寫速度,不考慮並發問題,本地緩存自然是最快的。但是如果本地緩存不加鎖,那應並發了咋辦呢?所以,我們以加鎖方式再比較一次。
- 場景使用,同一數據,從數據庫取出來,放到redis只要一次,而放到本地緩存,則需要n個集群次
- 本地緩存無法用於重復點擊,重復點擊會分發請求到多台服務器,而用本地緩存只能防止本機重復點擊,redis則可以防止,但是時間間隔也需要在redis的讀寫差之外。
- redis內存可能n多擴充,而本地擴大堆內存代價是很大的。
- 本地緩存需要自己實現過期功能,實現不好可能導致極其嚴重的后果,而redis經過大量的流量驗證,許多漏洞無需考試,安全。
- 本地緩存無法提供豐富的數據結構,redis可以。
- redis可以寫磁盤,持久化,本地緩存不可以或者說很麻煩要考慮的東西太多。
- 各位開發同學水平差別大,使用本地緩存極有可能導致嚴重的線程安全問題,並發考慮嚴重。
- 加本地緩存后,代碼復雜度急劇上升,后面進來的開發很難一下領會原有開發想法。間接提升維護成本。
- 其實在map和redis取值這里省的時間,可能在我們寫得亂七八糟的代碼里,早都不算啥了,所有有時候咱們真的沒必要較那幾毫秒的真!
個人感覺就是,框架是盡量選擇最優的方式進行處理,本地緩存勝。業務代碼盡量以最穩的方式進行處理,redis勝。
選擇什么樣的方式,還得看用於什么樣的場景!