Redis面試題,最強彙總
我把所有Java相關的面試題和答案都整理成了PDF,並且帶書籤目錄,閱讀起來非常方便
面試題及答案PDF下載:https://www.hicxy.com/?p=2645
面試題及答案PDF下載:https://www.hicxy.com/?p=2645
面試題及答案PDF下載:https://www.hicxy.com/?p=2645
1. 快取雪崩和快取穿透問題解決方案
1、快取雪崩
- 簡介:快取同一時間大面積的失效,所以,後面的請求都會落到資料庫上,造成資料庫短時間內承受大量請求而崩掉。
- 解決辦法
- 事前:儘量保證整個 redis 叢集的高可用性,發現機器宕機儘快補上。選擇合適的記憶體淘汰策略。
- 事中:本地ehcache快取 + hystrix限流&降級,避免MySQL崩掉
- 事後:利用 redis 持久化機制儲存的資料儘快恢復快取
- 快取雪崩
2、 快取穿透
-
簡介:一般是黑客故意去請求快取中不存在的資料,導致所有的請求都落到資料庫上,造成資料庫短時間內承受大量請求而崩掉。
-
解決辦法
最常見的則是採用布隆過濾器,將所有可能存在的資料雜湊到一個足夠大的bitmap中,一個一定不存在的資料會被 這個bitmap攔截掉,從而避免了對底層儲存系統的查詢壓力。另外也有一個更為簡單粗暴的方法(我們採用的就是這種),如果一個查詢返回的資料為空(不管是數 據不存在,還是系統故障),我們仍然把這個空結果進行快取,但它的過期時間會很短,最長不超過五分鐘。
2. Redis事務的三個階段
- 事務開始 MULTI
- 命令入隊
- 事務執行 EXEC
事務執行過程中,如果服務端收到有EXEC、DISCARD、WATCH、MULTI之外的請求,將會把請求放入佇列中排隊
3. Redis key 的過期時間和永久有效分別怎麼設定?
EXPIRE 和 PERSIST 命令
expire 指令可以設定 key 的超時時間,單位秒。即在多少秒後過期。 返回1代表設定成功;返回 0 代表設定不成功,此時是因為key不存在導致的。
127.0.0.1:6379> expire "key-aaa" 10 (integer) 1 127.0.0.1:6379> expire "key-not-exists" 10 (integer) 0
3 秒後使用 ttl 命令查詢剩餘的超時時間:
127.0.0.1:6379> ttl "key-aaa"
(integer) 7
使用 persist 清除過期時間
127.0.0.1:6379> set "key-aaa" "value-bbb" EX 15
OK
127.0.0.1:6379> ttl "key-aaa"
(integer) 11
127.0.0.1:6379> persist "key-aaa"
(integer) 1
127.0.0.1:6379> ttl "key-aaa"
(integer) -1
127.0.0.1:6379> get "key-aaa"
"value-bbb"
persist 返回值:
1:成功清理過期時間。
0:key 不存在,或者沒有設定過期時間
4. 使用方式
GEOADD key longitude latitude member [longitude latitude member ...]
將給定的位置物件(緯度、經度、名字)新增到指定的key。其中,key為集合名稱,member為該經緯度所對應的物件。在實際運用中,當所需儲存的物件數量過多時,可通過設定多key(如一個省一個key)的方式對物件集合變相做sharding,避免單集合數量過多。
成功插入後的返回值:
(integer) N
其中N為成功插入的個數。
5. Redis 叢集方案應該怎麼做?都有哪些方案?
1、codis
2、目前用的最多的叢集方案,基本和 twemproxy 一致的效果,但它支援在節點數量改變情況下,舊節點資料可恢復到新 hash 節點。
redis cluster3.0 自帶的叢集,特點在於他的分散式演算法不是一致性 hash,而是 hash 槽的概念,以及自身支援節點設定從節點。具體看官方文件介紹。
3、在業務程式碼層實現,起幾個毫無關聯的 redis 例項,在程式碼層,對 key 進行 hash 計算,然後去對應的redis 例項操作資料。這種方式對 hash 層程式碼要求比較高,考慮部分包括,節點失效後的替代演算法方案,資料震盪後的自動指令碼恢復,例項的監控等等。
後面的問題,大家可以先自己獨立思考一下。
另外我把所有Java相關的面試題和答案都整理出來了,給大家參考一下
面試題及答案PDF下載:https://www.hicxy.com/?p=2645
面試題及答案PDF下載:https://www.hicxy.com/?p=2645
面試題及答案PDF下載:https://www.hicxy.com/?p=2645