1、會話緩存(Session Cache)
最常用的一種使用 Redis 的情景是會話緩存(session cache)。用 Redis 緩存會
話比其他存儲(如 Memcached)的優勢在於:Redis 提供持久化。當維護一個不
是嚴格要求一致性的緩存時,如果用戶的購物車信息全部丟失,大部分人都會不
高興的,現在,他們還會這樣嗎? 幸運的是,隨着 Redis 這些年的改進,很容
易找到怎么恰當的使用 Redis 來緩存會話的文檔。甚至廣為人知的商業平台
Magento 也提供 Redis 的插件。
2、全頁緩存(FPC)
除基本的會話 token 之外,Redis 還提供很簡便的 FPC 平台。回到一致性問題,
即使重啟了 Redis 實例,因為有磁盤的持久化,用戶也不會看到頁面加載速度的
下降,這是一個極大改進,類似 PHP 本地 FPC。 再次以 Magento 為例,Magento
提供一個插件來使用 Redis 作為全頁緩存后端。 此外,對 WordPress 的用戶來
說,Pantheon 有一個非常好的插件 wp-redis,這個插件能幫助你以最快速度加
載你曾瀏覽過的頁面。
3、隊列
Reids 在內存存儲引擎領域的一大優點是提供 list 和 set 操作,這使得 Redis
能作為一個很好的消息隊列平台來使用。Redis 作為隊列使用的操作,就類似於本
地程序語言(如 Python)對 list 的 push/pop 操作。 如果你快速的在 Google
中搜索“Redis queues”,你馬上就能找到大量的開源項目,這些項目的目的就
是利用 Redis 創建非常好的后端工具,以滿足各種隊列需求。例如,Celery 有一
個后台就是使用 Redis 作為 broker,你可以從這里去查看。
4,排行榜/計數器
Redis 在內存中對數字進行遞增或遞減的操作實現的非常好。集合(Set)和有序
集合(Sorted Set)也使得我們在執行這些操作的時候變的非常簡單,Redis 只是
正好提供了這兩種數據結構。所以,我們要從排序集合中獲取到排名最靠前的 10
個用戶–我們稱之為“user_scores”,我們只需要像下面一樣執行即可: 當然,
這是假定你是根據你用戶的分數做遞增的排序。如果你想返回用戶及用戶的分數,
你需要這樣執行: ZRANGE user_scores 0 10 WITHSCORES Agora Games 就
是一個很好的例子,用 Ruby 實現的,它的排行榜就是使用 Redis 來存儲數據的,
你可以在這里看到。
5、發布/訂閱
最后(但肯定不是最不重要的)是 Redis 的發布/訂閱功能。發布/訂閱的使用場景
確實非常多。我已看見人們在社交網絡連接中使用,還可作為基於發布/訂閱的腳
本觸發器,甚至用 Redis 的發布/訂閱功能來建立聊天系統!