[Open Source] .NET 基於StackExchange.Redis的擴充套件

Never、C發表於2017-07-24

目錄

簡介

  • Redis.Extension GitHub(歡迎Fork Star)

  • Redis.Extension nuget(Install-Package Redis.Extension)

  • Redis 開源的分散式NoSQL,c語言開發,儲存結構:key-value

  • 持久化(容災)

    • snapshot(快照)
      • Redis預設持久化方式,每次儲存RDB的時候,fork()出1個子程式進行持久化
      • dump.rdb
      • 配置n秒超過m個key 開始快照
      • 效能高,丟失資料比較多
    • Append-only file(aof)
      • 新命令到達則fsync一次,檔案足夠大的時候,rewrite一次。
      • appendfilename "appendonly.aof" 設定儲存檔案
      • appendfsync 設定頻率
      • auto-aof-rewrite 設定自動重寫
      • 效能稍慢,丟失資料非常少
  • 5種資料型別:string,list(連結串列),hash(雜湊),set(集合),zset(排序集合)

安裝

  • Windows

    • 管理多個服務例項
      • redis-server.exe --service-install redis.windows-service --service-name Redis --port 6369
      • sc delete Redis
    • 直接啟動
      • redis-server.exe redis.windows.conf
  • Linux

    • 原始碼包
    • docker
  • Mac

    • brew
    • docker

主從複製

  • 過程

    • 當設定好slave伺服器後,slave會建立和master的連線,然後傳送sync命令。
    • 無論是第一次同步建立的連線還是連線斷開後的重新連線,master都會啟動一個後臺程式,將資料庫快照儲存到檔案中,同時master主程式會開始收集新的寫命令並快取起來。
    • 後臺程式完成寫檔案後,master就傳送檔案給slave,slave將檔案儲存到磁碟上,然後載入到記憶體恢復資料庫快照到slave上。
    • 接著master就會把快取的命令轉發給slave。
    • 而且後續master收到的寫命令都會透過開始建立的連線傳送給slave。
    • 從master到slave的同步資料的命令和從client傳送的命令使用相同的協議格式。
    • 當master和slave的連線斷開時slave可以自動重新建立連線。
    • 如果master同時收到多個slave發來的同步連線命令,只會使用啟動一個程式來寫資料庫映象,然後傳送給所有slave。
  • 配置

    • slaveof 127.0.0.1 6379

備份與恢復

  • appendfilename "appendonly.aof"

  • snapshot "dump.rdb"

API

  • 具體的API呼叫可以 可以直接參考ManagerTest。
  • AddOrUpdate 支援指定具體時間點 快取失效
  • AddOrUpdate 支援指定具體時間點 快取失效
  • GetOrAdd 支援檢測快取 再讀庫操作
  • DeleteByPattern 支援根據key模糊刪除
  • SearchKeys 支援查詢Keys
  • TransExcute 支援Redis事務執行
  • Subscribe 支援快速訂閱訊息
  • Publish 支援快速釋出訊息

命令

  • string: set | get
  • hash: hmset | hgetall
  • list: lpush | lrange
  • set: sadd | smembers
  • zset: zadd | zrange
  • save bgsave
  • subscribe publish
  • keys *
  • info

相關文章