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