Redis能夠用來作什麼?(摘自http://www.lianpenglin.cc廉鵬林博客)

Redis 是互聯網技術領域使用最爲普遍的存儲中間件,它是「Remote Dictionary Service」的首字母縮寫,也就是「遠程字典服務」。Redis 以其超高的性能、完美的文檔、簡潔易懂的源碼和豐富的客戶端庫支持在開源中間件領域廣受好評。國內外不少大型互聯網公司都在使用 Redis,好比 Twitter、YouPorn、暴雪娛樂、Github、StackOverflow、騰訊、阿里、京東、華爲、新浪微博等等,不少中小型公司也都有應用。也能夠說,對 Redis 的瞭解和應用實踐已成爲當下中高級後端開發者繞不開的必備技能。html

由 Redis 面試想到的面試

在面試後端工程師 Redis 技能的時候,面試官一般問的第一個問題就是「Redis 能用來作什麼?」,第一個回答每每都會是「緩存」。緩存確實是 Redis 使用最多的領域,它相比 Memcache 而言更加易於理解、使用和控制。 但是若是再進一步問「還有呢?」,大多數同窗就會開始皺眉頭,只有一小部分人會回答「分佈式鎖」。若是你就分佈式鎖再深刻問下去,他們基本就會開始搖頭:咱們項目裏面 Redis 的鎖方法都是別人(應該是架構師)封裝好的,拿過來直接使用,內部細節沒有去了解過,也沒有必要了解。 對相似的場景,我深有體會。由於關於 Redis 的面試題,以前準備了不少,可是真正能用上的卻不多。當面試的同窗頻繁地回覆「不知道、沒用過」的時候,再繼續深刻追問已經毫無心義,這時候就須要切換話題了。偶爾趕上幾個能持續不少回合的同窗,他們總能令人眼前一亮。若是再拓展一下週邊知識點,就會發現這些人每每也會有所涉獵,這時我在心中已經暗暗地對這位同窗伸出了大拇指。 這樣的面試經歷過後也讓我深入反思:架構師的技能很高,對提高團隊研發效率頗有幫助,咱們很是欽佩和羨慕。可是普通開發者若是習慣於在架構師封裝好的東西之上,只專一於作業務開發,那長此以往,在技術理解和成長上就會變得遲鈍甚至麻木。從這個角度看,架構師也可能成爲普通開發者的「敵人」,他的強大能力會讓你們變成「溫室的花朵」,一旦遇到環境變化就會不知所措。redis

其實不少業務場景,若是僅僅是會使用某項技術、框架,那是再簡單不過了。但隨着業務發展,系統的用戶量、併發量漲上來以後,現有系統的問題就會層出不窮地暴露出來。若是不能深刻地瞭解系統、技術和框架背後的深層原理,不少問題根本沒法理解到本質,更談不上解決,臨時抱佛腳也於事無補。 所謂「授人以魚不若授人以漁」,本小冊的初衷和目標就是幫助後端開發者較爲深刻的理解 Redis 背後的原理和實踐經驗,作到知其然也知其因此然,爲將來進階成長爲架構師作好準備。數據庫

Redis能夠作什麼?後端

Redis的業務應用範圍很是普遍,Redis 能夠用在哪些地方?緩存

一、記錄文章的評論數、點贊數和點擊數(hash)。架構

二、記錄用戶的文章 ID 列表 (排序),便於快速顯示用戶的文章列表 (zset)。併發

三、記錄文章的標題、摘要、做者和封面信息,用於列表展現。(hase)。框架

四、記錄文章的點贊用戶id列表,評論id列表,用於顯示和去重計數(zset)。分佈式

五、緩存近期熱點文章,減小數據庫壓力(hash)。

六、記錄文章的相關文章id,根據內容推薦相關文章(list)。

七、若是文章ID是整數自增的,可使用redis來分配文章id(計數器)。

八、收藏集和文章之間的關係(zset)。

九、記錄熱門文章id列表,總熱榜和分類熱榜(zset)。

十、緩存用戶歷史行爲,進行惡意行爲過濾(zset,hash)。

相關文章
相關標籤/搜索