大廠使用 redis 通常遵循以下原則:采用集群部署、使用哨兵模式監(jiān)控集群、采用分布式鎖實(shí)現(xiàn)互斥控制、使用管道技術(shù)提高效率、使用 Lua 腳本避免輪詢、增加從庫實(shí)現(xiàn)讀寫分離、增加 Protobuf / JSON 支持、 使用 Redis 模塊增強(qiáng)功能、添加額外的安全防護(hù)。
除此之外,大廠還會(huì)根據(jù)具體業(yè)務(wù)場(chǎng)景和需求,定制 Redis 的高可用方案與功能。
如果你是一位后端工程師,面試時(shí)八成會(huì)被問到 Redis,特別是那些大型互聯(lián)網(wǎng)公司,不僅要求面試者能簡單使用 Redis,還要深入理解其底層實(shí)現(xiàn)原理,具備解決常見問題的能力。可以說,熟練使用 Redis 是后端工程師的必備技能。
但我發(fā)現(xiàn),在工作或面試時(shí),大家還是會(huì)有這樣那樣的疑問,比如:如何用 Redis 實(shí)現(xiàn)分布式鎖?Redis 怎樣處理過期鍵?緩存雪崩、穿透、熱點(diǎn)問題怎么解決?持久化、集群方案怎么選擇?如何優(yōu)雅地給 Redis 做鍵值分析?等等。
這里,分享給你一張 Redis問題畫像圖,幫你快速定位問題對(duì)應(yīng)的 Redis 主線模塊,及相關(guān)技術(shù)點(diǎn)。舉個(gè)例子,如果 Redis 響應(yīng)變慢,對(duì)照下圖你就會(huì)發(fā)現(xiàn),這個(gè)問題與 Redis 性能主線相關(guān),而性能主線又和數(shù)據(jù)結(jié)構(gòu)、異步機(jī)制、RDB、AOF 重寫相關(guān),找到了影響因素,解決起來就容易多了。
在學(xué)習(xí)和使用過程中,你還可以結(jié)合自己的實(shí)踐經(jīng)驗(yàn)不斷完善它。這樣一來,積累越多,畫像就越豐富。
這張圖出自 蔣德鈞,他是中科院計(jì)算所副研究員,長期致力于 Redis 研究,與阿里、螞蟻金服、百度、華為、中興等公司開展了多種項(xiàng)目合作,具有豐富的 Redis 實(shí)戰(zhàn)經(jīng)驗(yàn),申請(qǐng)了 NVM(非易失內(nèi)存)相關(guān)專利二十多項(xiàng)。
在專欄中,他總結(jié)了一條系統(tǒng)高效的 Redis 學(xué)習(xí)路徑,幫你透徹理解 Redis 核心原理,并通過上手實(shí)戰(zhàn),掌握高并發(fā)場(chǎng)景下的緩存解決方案。同時(shí),還有不少 Redis 高頻面試題講解,都是工作、面試中用得上的、實(shí)打?qū)嵉挠藏洝?/p>