Redis 的 5 個常見使用場景

2022-01-20 10:50:16 字數 1357 閱讀 1459

2015-07-22 23:31:46

在這篇文章中,我們將闡述 redis 最常用的使用場景,以及那些影響我們選擇的不同特性。

最常用的一種使用redis的情景是會話快取(session cache)。用redis快取會話比其他儲存(如memcached)的優勢在於:redis提供持久化。當維護乙個不是嚴格要求一致性的快取時,如果使用者的購物車資訊全部丟失,大部分人都會不高興的,現在,他們還會這樣嗎?

幸運的是,隨著 redis 這些年的改進,很容易找到怎麼恰當的使用redis來快取會話的文件。甚至廣為人知的商業平台magento也提供redis的外掛程式。

除基本的會話token之外,redis還提供很簡便的fpc平台。回到一致性問題,即使重啟了redis例項,因為有磁碟的持久化,使用者也不會看到頁面載入速度的下降,這是乙個極大改進,類似php本地fpc。

再次以magento為例,magento提供乙個外掛程式來使用redis作為全頁快取後端。

此外,對wordpress的使用者來說,pantheon有乙個非常好的外掛程式  wp-redis,這個外掛程式能幫助你以最快速度載入你曾瀏覽過的頁面。

reids在記憶體儲存引擎領域的一大優點是提供 list 和 set 操作,這使得redis能作為乙個很好的訊息佇列平台來使用。redis作為佇列使用的操作,就類似於本地程式語言(如python)對 list 的 push/pop 操作。

如果你快速的在google中搜尋「redis queues」,你馬上就能找到大量的開源專案,這些專案的目的就是利用redis建立非常好的後端工具,以滿足各種佇列需求。例如,celery有乙個後台就是使用redis作為broker,你可以從這裡去檢視。

redis在記憶體中對數字進行遞增或遞減的操作實現的非常好。集合(set)和有序集合(sorted set)也使得我們在執行這些操作的時候變的非常簡單,redis只是正好提供了這兩種資料結構。所以,我們要從排序集合中獲取到排名最靠前的10個使用者–我們稱之為「user_scores」,我們只需要像下面一樣執行即可:

當然,這是假定你是根據你使用者的分數做遞增的排序。如果你想返回使用者及使用者的分數,你需要這樣執行:

zrange user_scores 0 10 withscores

agora games就是乙個很好的例子,用ruby實現的,它的排行榜就是使用redis來儲存資料的,你可以在這裡看到。

最後(但肯定不是最不重要的)是redis的發布/訂閱功能。發布/訂閱的使用場景確實非常多。我已看見人們在社交網路連線中使用,還可作為基於發布/訂閱的指令碼觸發器,甚至用redis的發布/訂閱功能來建立聊天系統!(不,這是真的,你可以去核實)。

redis提供的所有特性中,我感覺這個是喜歡的人最少的乙個,雖然它為使用者提供如果此多功能。

等等?親愛的讀者,你是怎麼認為的呢?你會在什麼情況使用redis呢?

Redis 的 5 個常見使用場景

最常用的一種使用redis的情景是會話快取 session cache 用redis快取會話比其他儲存 如memcached 的優勢在於 redis提供持久化。當維護乙個不是嚴格要求一致性的快取時,如果使用者的購物車資訊全部丟失,大部分人都會不高興的,現在,他們還會這樣嗎?幸運的是,隨著 redis...

Redis 的 5 個常見使用場景

1,會話快取 session cache redis 具有快取資料持久化的能力,當快取因出現問題而重啟後,之前的快取資料還在那兒,這個就比較實用,避免了因為session突然消失帶來的使用者體驗問題。2,頁面快取 如果你使用的是伺服器端內容渲染,你又不想為每個請求重新渲染每個頁面,就可以使用 red...

Redis 的 5 個常見應用場景

redis 是乙個強大的記憶體型儲存,具有豐富的資料結構,使其可以應用於很多方面,包括作為資料庫 快取 訊息佇列等等。如果你的印象中redis只是乙個 key value 儲存,那就錯過了redis很多強大的功能,下面就是實際應用場景中5個最普遍的案例。如果你使用的是伺服器端內容渲染,你又不想為每個...