Redis的高級特性一覽

更多內容,歡迎關注微信公衆號:全菜工程師小輝。公衆號回覆關鍵詞,領取免費學習資料。html

應用場景

  • 緩存系統:用於緩解數據庫的高併發壓力
  • 計數器:使用Redis原子操做,用於社交網絡的轉發數,評論數,粉絲數,關注數等
  • 排行榜:使用zset數據結構,進行排行榜計算
  • 實時系統:使用Redis位圖的功能實現布隆過濾器,進而實現垃圾郵件處理系統
  • 消息隊列:使用list數據結構,消息發佈者push數據,多個消息訂閱者經過阻塞線程pop數據,以此提供簡單的消息隊列能力

之因此說簡單,是由於Redis官方不提供可靠消費/發佈的機制;須要自行實現故障轉移、隊列持久化、隊列監控和流量控制等mq具有的功能;算法

消息隊列

高級功能

慢查詢

慢查詢只記錄Redis在處理存儲的時間計數(圖中的3步驟),並不包含網絡通訊時間和排隊時間,因此客戶端超時分析時要綜合每一個因素。數據庫

慢查詢

注意:緩存

  • 慢查詢保存數量參數不要設置太小,同時最好能按期持久化慢查詢記錄,方便歷史問題排查。

pipline

pipline用於異步處理大量Redis請求。微信

注意:網絡

  • 大量任務須要劃分出多個pipline進行操做(不然,網絡和等待時間都承受壓力)。
  • pipline每次只能做用在一個Redis節點上。
  • M操做(mget,mset相似的指令)相比pipline,前者是原子操做,後者並非。Redis會把一個攜帶不少命令的pipeline拆分紅幾個子命令。

pipline

發佈訂閱

Redis 發佈訂閱(pub/sub)是一種消息通訊模式:發送者(pub)發送消息,訂閱者(sub)接收消息。數據結構

注意:併發

  • Redis沒法作消息堆積(新訂閱者沒法獲取歷史訂閱消息)

發佈訂閱

bitmap

字符串big對應的二進制(ASCII碼)如圖所示, bitmap能夠直接操控位。使用每一個數位表明一個用戶或者狀態,相比int數據結構保存,節省了32倍的內存空間。異步

注意:分佈式

  • bitmap並非適合全部場景去替換常規的數據存儲
  • bit是string類型,最大隻能存512MB
  • 注意setbit函數會自動補位,因此生產環境要注意setbit的偏移量,可能會形成較大的耗時

bitmap

Hyperloglog

基於HyperLogLog算法,實現用極小空間完成獨立數量的統計,類型本質是string。

注意:

  • 沒法保證數據徹底正確。官網說明錯誤率爲0.81%
  • 沒法取到單條數據

GEO

GEO(地理信息定位)是Redis3.2版本發佈的功能,存儲經緯度,計算兩地距離,範圍計算等,類型本質是zset。

Redis-sentinel

Redis哨兵是Redis2.8版本發佈的功能,解決Redis集羣的故障轉移等痛點,支持高可用。

Redis-cluster

Redis集羣是Redis3.0版本發佈的功能,支持分佈式

更多內容,歡迎關注微信公衆號:全菜工程師小輝。公衆號回覆關鍵詞,領取免費學習資料。

哎呀,若是個人名片丟了。微信搜索「全菜工程師小輝」,依然能夠找到我

原文出處:https://www.cnblogs.com/mseddl/p/11456765.html

相關文章
相關標籤/搜索