阿里JavaP8十年摸爬滾打,告訴你老程序員爲何反對使用Redis?

阿里JavaP8十年摸爬滾打,告訴你老程序員爲何反對使用Redis?

 

前段時間,有個人吐槽自己的同事是上古程序猿,一直堅持反對使用Redis。那位上古程序猿設計公司的業務系統時候,始終堅持永遠不要用緩存(其他人想用redis),例如做個接口防重複,一定要用數據庫來實現,包括定期失效之類的功能。

對此你怎麼看呢?

Redis號稱支持併發11萬讀操作、併發8萬寫操作。由於優異的性能和方便的操作, Redis在國內各大公司都很熱門,比如新浪、阿里、騰訊、百度、美團、小米等,Redis也是大廠面試最愛問的,尤其是Redis客戶端、Redis高級功能、Redis持久化、Redis複製的原理和優化策略、Redis分佈式解決方案等。

我們在工作中也經常會用到Redis,但是爲什麼要用Redis?關於Redis的一些場景和實戰問題,90%以上的人都沒有真正理解Redis。


爲什麼要用Redis?是不是一定要用Redis?

項目中使用Redis,主要考慮性能和併發。其實不是所有的場景都要上Redis,如果僅僅是分佈式鎖這些,完全可以用中間件Zookpeer等代替。很多業務系統其實用數據庫就夠了,無腦上緩存/NOSQL可能會帶來更多更嚴重的問題。

性能:

如下圖所示,在大併發的情況下,所有的請求直接訪問數據庫,數據庫會出現連接異常。這個時候,就需要使用Redis做一個緩衝操作,讓請求先訪問到Redis,而不是直接訪問數據庫。

阿里JavaP8十年摸爬滾打,告訴你老程序員爲何反對使用Redis?

 

提個問題:Redis慢查詢操作,該如何優化?

併發:

如下圖所示,在大併發的情況下,所有的請求直接訪問數據庫,數據庫會出現連接異常。這個時候,就需要使用Redis做一個緩衝操作,讓請求先訪問到Redis,而不是直接訪問數據庫。

阿里JavaP8十年摸爬滾打,告訴你老程序員爲何反對使用Redis?

 


謹!慎!使!用!緩!存!

無數大佬都提醒我們:謹慎使用緩存!

緩存失效是計算機科學兩大難題之一(另一大難題是命名),緩存會掩蓋掉一些問題,甚至放大問題。

使用Redis最常遇到的問題主要就是以下4個:

1、緩存和數據庫雙寫一致性問題

2、緩存雪崩問題

3、緩存擊穿問題

4、緩存的併發競爭問題

從安全角度來說,緩存也是最容易被攻擊的薄弱點(緩存溢出攻擊,不是緩存區溢出攻擊,用大量無效的數據佔滿緩存空間使得系統性能斷崖式下跌)。

所以通常做壓力測試的時候都是要求必須關閉緩存測試。

不單單是緩存,所有的中間件在解決一部分問題的同時也會帶來新的挑戰。

譬如消息隊列對於削峯填谷的功效非常明顯,但是如果峯值持續的時間遠遠的超出了估計呢?而如果這時候消息阻塞的監控還在計劃中的話……

比如說分佈式計算帶來了無限擴容的可能,而一致性問題很多時候會帶來非常多的麻煩。

 

看到這裏,你還敢說自己會redis嗎?關於Redis的這8個阿里面試題,你能否答得上來?

1.Redis相比memcached有哪些優勢?

2.Redis常見性能問題和解決方案

3.MySQL裏有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據

4.Memcache與Redis的區別都有哪些?

5.Redis 常見的性能問題都有哪些?如何解決?

6.Redis 最適合的場景

7.Redis的同步機制瞭解麼?

8.是否使用過Redis集羣,集羣的原理是什麼?

Redis面試題

阿里JavaP8十年摸爬滾打,告訴你老程序員爲何反對使用Redis?

 

阿里JavaP8十年摸爬滾打,告訴你老程序員爲何反對使用Redis?

 

阿里JavaP8十年摸爬滾打,告訴你老程序員爲何反對使用Redis?

 

Redis電子書

這些PDF小編已經整理好了,需要免費領取的朋友點個贊,然後私信小編【PDF】就可以領取了

·《Redis入門指南》

阿里JavaP8十年摸爬滾打,告訴你老程序員爲何反對使用Redis?

 

阿里JavaP8十年摸爬滾打,告訴你老程序員爲何反對使用Redis?

 

·《Redis實戰》

阿里JavaP8十年摸爬滾打,告訴你老程序員爲何反對使用Redis?

 

阿里JavaP8十年摸爬滾打,告訴你老程序員爲何反對使用Redis?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章