Redis高級應用

  上一篇博文講述了Redis的一些經常使用命令,能夠對數據庫及數據庫服務器進行操做,本篇將講述Redis的高級應用及配置redis

  • 安全性
    • 設置密碼:修改redis.conf中的requirepass,在其後面添加密碼便可
      • 使用:
        • 進入客戶端時,添加參數u;即 redis-cli -u password
        • 進入客戶端後,使用命令 auth,即 auth password
  • 主從複製
    • 經過主從複製能夠容許多個是slave server擁有和master server相同的數據庫副本
    • 特色:
      • Master能夠擁有多個slave
      • 多個slave能夠鏈接同一個master外,還能夠鏈接到其餘的slave
      • 主從複製不會阻塞master,在同步數據時,master能夠繼續處理client請求
      • 提升系統的伸縮性
    • Redis主從複製過程
    1. Slave與master創建鏈接,發送sync同步命令
    2. Master會啓動一個後臺進程,將數據庫快照保存到文件中,同時master主進程會開始收集新的寫命令並緩存
    3. 後臺完成保存後,就將此文件發送給slave
    4. Slave將此文件保存到硬盤上
    • 配置主從服務器
      • 配置slave服務器:
      1. 在slave的配置文件中修改slaveof,在其後面添加master的ip
      2. 在slave的配置文件中修改masterauth,在其後面添加master的密碼
  • 事務處理
    • Redis只能保證一個client發起的事務能夠連續執行,中間不插入其餘client的命令
    • 原理:但一個client在一個連續中發出multi命令時,這個鏈接會進入一個事務上下文,該鏈接後續的命令不會當即執行,而是先放入一個隊列中,當執行exec命令時,redis會順序的執行隊列中的全部命令
    • 打開事務:multi
    • 執行並關閉事務:exec
    • 關閉並取消事務:discard
    • 監視:watch命令會監視給定的key,當exec時,若是監視的key從調用watch後發生變化,這整個事務將失敗
      • 樂觀鎖:基於數據庫表的版本解決方案中,通常是經過爲數據庫表添加一個「version」字段來實現讀取數據時,將此版本號一同讀出,以後更新時,對此版 本號+1。此時,將提交數據的版本號與數據庫表對應記錄的當前版本號進行比對,若是提交的數據版本號大於數據庫當前版本號,則予以更新,不然認爲是過時數據
      • 監視key:watch,如 watch key
      • 關閉監視:unwatch,如 unwatch key
  • 持久化機制
    • Redis兩種持久化方式
      • snapshotting(快照)默認方式
        • 將內存中數據以快照的方式寫入二進制文件中,默認文件名爲dump.rdb。
        • 可經過配置自動化快照持久化的方式,修改redis.conf的save參數,配置redis在n秒內若是超過m個key被修改就自動作快照
      • Append-only file(aof)
        • 將操做寫入文件中,當發生操做時,寫入磁盤
        • 修改redis.conf的appendonly爲yes,開啓aof方式
        • 修改redis.conf的appendfsync的參數,設置aof方式
          • always:收到寫命令就當即寫入磁盤
          • everysec:沒秒鐘寫入磁盤一次
          • no:徹底依賴os寫入
  • 發佈訂閱消息
    • 發佈訂閱(pub/sub)是一種消息通訊模式,主要目的是解除消息發佈者和消息訂閱者之間的耦合,
    • 訂閱者能夠經過subscribe和psubscribe命令向redis server訂閱本身感興趣的消息類型,redis將信息類型稱爲通道(channel)。當發佈者經過publish命令向redis server發送特定類型的信息時,訂閱該信息類型的所有client都會收到此信息
    • 訂閱消息:subscribe/psubscribe,如 subscribe/psubscribe key
    • 發佈消息:publish,如 publish key value
  • 虛擬內存的使用
    • 暫時把不常常訪問的數據內存交換到磁盤中,從而騰出內存空間用於其餘須要訪問的數據
    • 提升數據庫容量的辦法之一是使用虛擬內存把那些不常常訪問的數據交換到磁盤中
    • 配置
      • vm-enabled:設置虛擬內存是否開啓
      • vm-swap-file:交換出來的value保存的文件路徑
      • vm-max-memory:redis使用的最大內存上限
      • vm-page-size:每一個頁面的大小
      • vm-pages:最多使用多少個頁面
      • vm-max-threads:用於執行value對象換入的工做線程數量
相關文章
相關標籤/搜索