Redis 最常用的使用場景

2021-09-11 02:43:59 字數 1236 閱讀 2200

最常用的一種使用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的list資料結構,而實際上nosqlfan之前還討論過採用sorted sets結構來做帶權重的訊息佇列的方法。實際上還是乙個佇列,多個端點將日誌資訊寫入redis,然後乙個worker統一將所有日誌寫到磁碟。比如將每個人的好友存在乙個集合 set 中,這樣求兩個人的共同好友...

redis使用場景

最近要去面試php程式設計師,去各家招聘 看看,都要有redis方面的知識儲備。這裡寫一篇部落格,就當是對最近學習redis的一次回顧。簡單一句話介紹redis 基於記憶體的高效的key value資料庫,把資料載入到記憶體中進行處理,定期把資料儲存到硬碟進行儲存,單執行緒。redis五大資料型別 ...

redis使用場景

redis開創了一種新的資料儲存思路,使用redis,我們不用在面對功能單調的資料庫時,把精力放在寫龐大的sql上了,而是利用redis靈活多變的資料結構和資料操作來實現。redis常用資料型別 redis最為常用的資料型別主要有以下五種 下面我們先來逐一的分析下這五種資料型別的使用和內部實現方式 ...