Redis能幹啥?細看11種Web應用場景

2022-10-11 10:18:07 字數 1936 閱讀 7872

2011-07-25 10:38 賈隆 51cto.com

字型大小:t | t

redis的乙個很大好處就是可以不用整個轉入到這個資料庫,而是可以沿用之前的mysql等資料庫,而僅在一些特定的應用場景通過redis的特性提高效率。本文列出了11個這樣的web應用場景,如顯示最新的專案列表、刪除和過濾、排行榜等相關需求。

ad:【51cto精選譯文】在「怎樣讓redis在你的系統中發揮作用」一文中,salvatore 'antirez』 sanfilippo告訴我們如何利用redis獨有的資料結構處理能力來解決一些常見問題。一些redis原語命令比如lpush、ltrim和lrem等等能夠用來幫助開發者完成需要的任務——這些任務在傳統的資料庫儲存中非常困難或緩慢。這是一篇非常有用並且實際的文章。那麼要如何在你的框架中完成這些任務呢?

下面列出11種web應用場景,在這些場景下可以充分的利用redis的特性,大大提高效率。

1.在主頁中顯示最新的專案列表。

redis使用的是常駐記憶體的快取,速度非常快。lpush用來插入乙個內容id,作為關鍵字儲存在列表頭部。ltrim用來限制列表中的專案數最多為5000。如果使用者需要的檢索的資料量超越這個快取容量,這時才需要把請求傳送到資料庫。

2.刪除和過濾。

如果一篇文章被刪除,可以使用lrem從快取中徹底清除掉。 

3.排行榜及相關問題。

排行榜(leader board)按照得分進行排序。zadd命令可以直接實現這個功能,而zrevrange命令可以用來按照得分來獲取前100名的使用者,zrank可以用來獲取使用者排名,非常直接而且操作容易。

4.按照使用者投票和時間排序。

這就像reddit的排行榜,得分會隨著時間變化。lpush和ltrim命令結合運用,把文章新增到乙個列表中。一項後台任務用來獲取列表,並重新計算列表的排序,zadd命令用來按照新的順序填充生成列表。列表可以實現非常快速的檢索,即使是負載很重的站點。

5.過期專案處理。

使用unix時間作為關鍵字,用來保持列表能夠按時間排序。對current_time和time_to_live進行檢索,完成查詢過期專案的艱鉅任務。另一項後台任務使用zrange...withscores進行查詢,刪除過期的條目。

6.計數。

進行各種資料統計的用途是非常廣泛的,比如想知道什麼時候封鎖乙個ip位址。incrby命令讓這些變得很容易,通過原子遞增保持計數;getset用來重置計數器;過期屬性用來確認乙個關鍵字什麼時候應該刪除。

7.特定時間內的特定專案。

這是特定訪問者的問題,可以通過給每次頁面瀏覽使用sadd命令來解決。sadd不會將已經存在的成員新增到乙個集合。

8.實時分析正在發生的情況,用於資料統計與防止垃圾郵件等。

使用redis原語命令,更容易實施垃圾郵件過濾系統或其他實時跟蹤系統。

9.pub/sub。

在更新中保持使用者對資料的對映是系統中的乙個普遍任務。redis的pub/sub功能使用了subscribe、unsubscribe和publish命令,讓這個變得更加容易。 

10.佇列。

在當前的程式設計中佇列隨處可見。除了push和pop型別的命令之外,redis還有阻塞佇列的命令,能夠讓乙個程式在執行時被另乙個程式新增到佇列。你也可以做些更有趣的事情,比如乙個旋轉更新的rss feed佇列。

11.快取。

redis快取使用的方式與memcache相同。

網路應用不能無休止地進行模型的戰爭,看看這些redis的原語命令,儘管簡單但功能強大,把它們加以組合,所能完成的就更無法想象。當然,你可以專門編寫**來完成所有這些操作,但redis實現起來顯然更為輕鬆。

敏捷能幹啥?

一次和朋友談起敏捷,朋友說了一句 一切開發方法都是耍流氓,軟體做的好不好全看人怎麼樣 好吧,我50 的同意這個觀點。只要人足夠優秀,流程就是個屁。縱觀人類歷史上那些牛叉叉的軟體,基本都是最初幾個大牛憑藉自己的天才才華搗鼓出來的。比如unix啥的。我相信這些大牛們開發軟體時候時候,肯定沒有仔細考慮過該...

Python能幹啥? 專案雜記(目錄)

目錄python之py9 py9作業檢查 python之py9 py9部落格情況獲取 曾畫過喜羊羊,已丟失,一大憾事。python之turtle庫 五角星 python之turtle庫 玫瑰花 python之turtle庫 小豬佩奇 隨手寫的一些常用指令碼 色彩繽紛的python 改變字型顏色及樣式...

學了python能幹啥舉例 django能幹什麼

django是什麼 django是乙個開放源 的web應用框架,由python寫成。採用了mt v的框架模式,即模型m,模板t和檢視v。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容為主的 的,即是cms 內容管理系統 軟體。並於2005年7月在bsd許可證下發布。這套框架是以比利時的吉...