目錄
-
- AddOrUpdate
- GetOrAdd
- DeleteByPattern
- SearchKeys
- TransExcute
- Subscribe/Publish
-
Todo
- Sentinel
- .NET Core
- Configuration
- Log
- Async
簡介
-
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 設定自動重寫
- 效能稍慢,丟失資料非常少
- snapshot(快照)
-
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