簡介
Redis是一個開源的Key-Value存盤,但又不僅僅是Key-Value存盤,用官網上的話來說,Redis是一個資料結構存盤,可用作資料庫、快取和訊息中間件,相對于傳統的Key-Value存盤Memcached來說,Redis具有如下特點:
-
速度快
-
豐富的資料結構,除String之外,還有List、Hash、Set、Sorted Set
-
單執行緒,避免了執行緒切換和鎖的性能消耗
-
原子操作
-
可持久化(RDB與AOF)
-
發布/訂閱
-
支持Lua腳本
-
分布式鎖
-
事務
-
主從復制與高可用(Redis Sentinel)
-
集群(3.0版本以上)
資料結構
1、String
這是最簡單的Redis型別,如果只使用這種型別,Redis就像一個可持久化的Memcached服務器,
2、List
Redis的List是基于雙向鏈表實作的,可以支持反向查找和遍歷,
常用案例:聊天系統、社交網路中獲取用戶最新發表的帖子、簡單的訊息佇列、新聞的分頁串列、博客的評論系統,
3、Hash
Hash是一個String型別的field和value之間的映射表,請見下圖,類似于.NET中的Hashtable和Dictionary,主要用來存盤物件,可以避免序列化的開銷和并發修改控制的問題,

4、Set
Set也是一個串列,不過它的特殊之處在于它是可以自動排重的:當需要存盤一個串列資料,而又不希望出現重復的時候,Set是一個很好的選擇(比如ID的集合),并且Set提供了判斷某個成員是否在一個Set集合內的介面,這也是List所沒有的,
5、Sorted Set
Sorted Set和Set的使用場景類似,區別是Sorted Set會根據提供的score引數來進行自動排序,當你需要一個有序的并且不重復的集合串列,那么就可以選擇Sorted Set資料結構,常用案例:游戲中的排行榜,
開源客戶端
StackExchange.Redis:
https://github.com/StackExchange/StackExchange.Redis?spm=5176.100239.blogcont272212.10.IsQwET&file=StackExchange.Redis
基本用法
StackExchange.Redis中的中心物件是名稱空間中的ConnectionMultiplexer類StackExchange.Redis,這是隱藏多個服務器詳細資訊的物件,由于ConnectionMultiplexer功能很多,因此可以在呼叫方之間共享和重用它,您不應該創建ConnectionMultiplexer每個操作,它是完全執行緒安全的,并且可以用于此用途,在所有后續示例中,將假定您已ConnectionMultiplexer保存一個實體以供重用,但是現在,讓我們創建一個,這可以使用ConnectionMultiplexer.Connect或ConnectionMultiplexer.ConnectAsync傳入配置字串或ConfigurationOptions物件來完成,配置字串可以采用逗號分隔的一系列節點的形式,因此讓我們僅通過默認埠(6379)連接到本地計算機上的實體:
using StackExchange.Redis; ... ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost"); // ^^^ store and re-use this!!!
需要注意的是ConnectionMultiplexer工具IDisposable,可以在不再需要處置,這是故意不顯示using陳述句用法的原因,因為ConnectionMultiplexer要重用此物件非常少見,因此您希望簡短地使用它,
更復雜的情況可能涉及主/副本設定,對于此用法,只需指定組成該邏輯Redis層的所有所需節點(它將自動識別主節點):
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,server2:6379");
如果發現兩個節點都是主節點,則可以有選擇地指定一個決勝鍵,該鍵可用于解決問題,但是幸運的是這種情況很少見,
有了之后ConnectionMultiplexer,您可能需要做以下三件事:
-
訪問redis資料庫(請注意,在集群的情況下,單個邏輯資料庫可能分布在多個節點上)
-
利用redis的發布/訂閱功能
-
訪問單個服務器以進行維護/監視
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/265004.html
標籤:.NET技术
