1. 程式人生 > >Redis可以用來做什麼?(摘自http://www.lianpenglin.cc廉鵬林部落格)

Redis可以用來做什麼?(摘自http://www.lianpenglin.cc廉鵬林部落格)

Redis 是網際網路技術領域使用最為廣泛的儲存中介軟體,它是「Remote Dictionary Service」的首字母縮寫,也就是「遠端字典服務」。Redis 以其超高的效能、完美的文件、簡潔易懂的原始碼和豐富的客戶端庫支援在開源中介軟體領域廣受好評。國內外很多大型網際網路公司都在使用 Redis,比如 Twitter、YouPorn、暴雪娛樂、Github、StackOverflow、騰訊、阿里、京東、華為、新浪微博等等,很多中小型公司也都有應用。也可以說,對 Redis 的瞭解和應用實踐已成為當下中高階後端開發者繞不開的必備技能。

由 Redis 面試想到的

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

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

Redis可以做什麼?

Redis的業務應用範圍非常廣泛,Redis 可以用在哪些地方?

1、記錄文章的評論數、點贊數和點選數(hash)。

2、記錄使用者的文章 ID 列表 (排序),便於快速顯示使用者的文章列表 (zset)。

3、記錄文章的標題、摘要、作者和封面資訊,用於列表展示。(hase)。

4、記錄文章的點贊使用者id列表,評論id列表,用於顯示和去重計數(zset)。

5、快取近期熱點文章,減少資料庫壓力(hash)。

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

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

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

9、記錄熱門文章id列表,總熱榜和分類熱榜(zset)。</span></p><p><span style="font-size: 14px;">10、快取使用者歷史行為,進行惡意行為過濾(zset,hash)。