
序-為什么要學Redis
和隔壁組的老哥聊天,老哥最近面了十幾個候選人,他覺得合格的只有四五個,我問他主要問了什么?他重點提到了Redis,
提到這,他忍不住吐槽:“他們很多人Redis真的不行,問他們Redis主從、哨兵、集群什么的都答不上來,基本上就用過一些封裝的api,也敢寫熟悉,”
聽到這,我也有點不好意思,這些東西我也不太清楚,我也只是個只會調api的crud仔,要是現在在他手下面試,基本會被掛掉吧,
而且Redis這東西還真的不是“造火箭”的范疇,這個老哥他們組的業務大量用到了Redis,而且和資料庫不同,Redis是沒有專門的運維人員的,資料遷移、故障排查等等運維作業都是由開發來完成的,
所以對開發人員,Redis不應該是一個api包裹的黑箱,而要打破認知的障礙,深入學習Redis,積蓄進步的力量,
1、Redis簡介
Redis[1]是一種基于鍵值對(key-value)的NoSQL資料庫,與很多鍵值對資料庫不同的是,Redis中的值可以是由string(字串)、hash(哈希)、
list(串列)、set(集合)、zset(有序集合)、Bitmaps(位圖)、 HyperLogLog、GEO(地理資訊定位)等多種資料結構和演算法組成,因此
Redis可以滿足很多的應用場景,而且因為Redis會將所有資料都存放在記憶體中,所以它的讀寫性能非常驚人,不僅如此,Redis還可以將記憶體的資料利
用快照和日志的形式保存到硬碟上,這樣在發生類似斷電或者機器故障的時 候,記憶體中的資料不會“丟失”,
除了上述功能以外,Redis還提供了鍵過期、發布訂閱、事務、流水線、Lua腳本等附加功能,總之,如果在合適的場景使用好Redis,它就會像一把瑞士軍刀一樣所向披靡,
國內外很多大型互聯網公司都在使用 Redis,比如 Twitter、YouPorn、暴雪娛樂、Github、StackOverflow、騰訊、阿里、京東、華為、新浪微博等等,很多中小型公司也都有應用,也可以說,對 Redis 的了解和應用實踐已成為當下中高級后端開發者繞不開的必備技能,
2、Redis的應用場景
2.1、快取
快取機制幾乎在所有的大型網站都有使用,合理地使用快取不僅可以加快資料的訪問速度,而且能夠有效地降低后端資料源的壓力,Redis提供了鍵值過期時間設定,并且也提供了靈活控制最大記憶體和記憶體溢位后的淘汰策略,可以這么說,一個合理的快取設計能夠為一個網站的穩定保駕護航,
2.2、排行榜系統
排行榜系統幾乎存在于所有的網站,例如按照熱度排名的排行榜,按照發布時間的排行榜,按照各種復雜維度計算出的排行榜,Redis提供了串列和有序集合資料結構,合理地使用這些資料結構可以很方便地構建各種排行榜系統,
2.3、計數器應用
計數器在網站中的作用至關重要,例如視頻網站有播放數、電商網站有瀏覽數,為了保證資料的實時性,每一次播放和瀏覽都要做加1的操作,如果并發量很大對于傳統關系型資料的性能是一種挑戰,Redis天然支持計數 功能而且計數的性能也非常好,可以說是計數器系統的重要選擇,
2.4、社交網路
贊/踩、粉絲、共同好友/喜好、推送、下拉重繪等是社交網站的必備功 能,由于社交網站訪問量通常比較大,而且傳統的關系型資料不太適合保存這種型別的資料,Redis提供的資料結構可以相對比較容易地實作這些功能,
2.5、訊息佇列系統
訊息佇列系統可以說是一個大型網站的必備基礎組件,因為其具有業務解耦、非實時業務削峰等特性,Redis提供了發布訂閱功能和阻塞佇列的功能,雖然和專業的訊息佇列比還不夠足夠強大,但是對于一般的訊息佇列功能基本可以滿足,
2.6、分布式鎖與單執行緒機制
- 驗證前端的重復請求(可以自由擴展類似情況),可以通過redis進行過濾:每次請求將request Ip、引數、介面等hash作為key存盤redis(冪等性請求),設定多長時間有效期,然后下次請求過來的時候先在redis中檢索有沒有這個key,進而驗證是不是一定時間內過來的重復提交
- 秒殺系統,基于redis是單執行緒特征,防止出現資料庫“爆破”
- 全域增量ID生成,類似“秒殺”
3、Redis各版本特性
Redis借鑒了Linux作業系統對于版本號的命名規則:版本號第二位如果是奇數,則為非穩定版本(例如2.7、2.9、3.1),如果是偶數,則為穩定版本(例如2.6、2.8、3.0、3.2),
Redis重要版本時間軸如下:

其中Redis3.0是一個重要的版本,添加Redis的分布式實作Redis Cluster,填補了 Redis官方沒有分布式實作的空白,
參考:
【1】:《Redis開發與運維》
【2】:掘金小冊 《Redis 深度歷險:核心原理與應用實踐》
【3】:Redis之各版本特性
【4】:一:Redis的7個應用場景
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/278880.html
標籤:其他
上一篇:this決議
