redis 學與思系列(1)

前言

本篇文章主要解答如下幾個問題:redis

  • 爲何使用 Redis?
  • redis 有哪些適用場景?
  • 使用 Redis 有什麼缺點?

這3個問題實際上能夠看作是一類問題,主要從適用場景,優缺點角度解讀redis。數據庫

一.redis 能夠解決什麼問題?----適用場景

  • 緩存:緩存是redis使用最多的場景了,緩存機制幾乎全部中大型的網站都會用到緩存,緩存能夠說是扛高併發的一把利器。redis提供了豐富的數據結構類型,也提供了靈活的緩存過時機制和過時數據淘汰策略(這部份內容後面分享)。
  • 分佈式鎖:藉助redis 的set key value ex time nx 指令能夠實現分佈式鎖(可是這個有缺陷,後面進一步分析)
  • 排行版系統: 藉助redis的有序集合能夠實現
  • 異步隊列: 藉助redis的列表(lpush,rpop)等等相關指令能夠實現
  • 統計和查找:好比從10億個無序的數中選擇最大的10個數,能夠藉助redis的位圖功能實現。
  • 不精確的統計去重:好比統計用戶訪問某個頁面的UV,能夠藉助redis的HyperLogLog 來實現
    ....還有不少,不一一列舉了。

二.redis 有哪些優缺點?

  • 優勢:
1. 執行速度快.
2. 提供了豐富的數據結構,如字符串,列表,集合,有序集合,散列表,位圖,HyperLogLog等等。
3. 支持鍵過時和過時數據的淘汰策略.
4. 提供了發佈訂閱功能,能夠作消息隊列.
5. 提供了簡單的事務功能,pipeline 管道功能.
6. 支持lua腳本.
7. 支持數據持久化.
8. 支持分佈式集羣高可用部署.
複製代碼
  • 缺點:緩存

    因爲是內存數據庫,因此,單臺機器,存儲的數據量,跟機器自己的內存大小。雖然redis自己有key過時策略,可是仍是須要提早預估和節約內存。若是內存增加過快,須要按期刪除數據。
    複製代碼

後記

本文只是(從我的理解角度)簡單的解答了一下redis可用的適用場景和優缺點。後續在不斷的實踐過程當中就這塊內容有了更深的體會以後再作進一步補充。數據結構

相關文章
相關標籤/搜索