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