本文,是升級版,補充部分實戰案例。梳理幾個場景下利用 Redis 的特性能夠大大提升效率。web
原文地址:服務端指南 數據存儲篇 | 聊聊 Redis 使用場景
博客地址:blog.720ui.com/redis
隨着數據量的增加,MySQL 已經知足不了大型互聯網類應用的需求。所以,Redis 基於內存存儲數據,能夠極大的提升查詢性能,對產品在架構上很好的補充。在某些場景下,能夠充分的利用 Redis 的特性,大大提升效率。緩存
對於熱點數據,緩存之後可能讀取數十萬次,所以,對於熱點數據,緩存的價值很是大。例如,分類欄目更新頻率不高,可是絕大多數的頁面都須要訪問這個數據,所以讀取頻率至關高,能夠考慮基於 Redis 實現緩存。服務器
此外,還能夠考慮使用 Redis 進行會話緩存。例如,將 web session 存放在 Redis 中。微信
例如驗證碼只有60秒有效期,超過期間沒法使用,或者基於 Oauth2 的 Token 只能在 5 分鐘內使用一次,超過期間也沒法使用。session
出於減輕服務器的壓力或防止惡意的洪水攻擊的考慮,須要控制訪問頻率,例如限制 IP 在一段時間的最大訪問量。數據結構
數據統計的需求很是廣泛,經過原子遞增保持計數。例如,應用數、資源數、點贊數、收藏數、分享數等。架構
社交屬性相關的列表信息,例如,用戶點贊列表、用戶分享列表、用戶收藏列表、用戶關注列表、用戶粉絲列表等,使用 Hash 類型數據結構是個不錯的選擇。性能
記錄用戶斷定信息的需求也很是廣泛,能夠知道一個用戶是否進行了某個操做。例如,用戶是否點贊、用戶是否收藏、用戶是否分享等。ui
在某些場景中,例如社交場景,經過交集、並集和差集運算,能夠很是方便地實現共同好友,共同關注,共同偏好等社交關係。
按照得分進行排序,例如,展現最熱、點擊率最高、活躍度最高等條件的排名列表。
按照時間順序排列的最新動態,也是一個很好的應用,可使用 Sorted Set 類型的分數權重存儲 Unix 時間戳進行排序。
Redis 能做爲一個很好的消息隊列來使用,依賴 List 類型利用 LPUSH 命令將數據添加到鏈表頭部,經過 BRPOP 命令將元素從鏈表尾部取出。同時,市面上成熟的消息隊列產品有不少,例如 RabbitMQ。所以,更加建議使用 RabbitMQ 做爲消息中間件。
(完)
更多精彩文章,盡在「服務端思惟」微信公衆號!