給大家介紹6款.NET系Redis客戶(hù)端庫(kù): ServiceStack.Redis、StackExchange.Redis、CSRedisCore、FreeRedis、NewLife.Redis、BeetleX.Redis。
01、ServiceStack.Redis
ServiceStack.Redis算的上最老牌、最有名的一款Redis C#/.NET客戶(hù)端庫(kù)了,但是因?yàn)樯虡I(yè)性導(dǎo)致對(duì)于大多數(shù)人來(lái)說(shuō)不是首選。
ServiceStack.Redis是一款功能豐富、操作簡(jiǎn)單、高性能的C#/.NET客戶(hù)端庫(kù),對(duì)原生的功能和特性提供很好的支持,同時(shí)又做了更高級(jí)的功能抽象,使得對(duì)簡(jiǎn)單對(duì)象或復(fù)雜類(lèi)型序列化操作更容易。當(dāng)然也同時(shí)提供了同步和異步API。
下面我們寫(xiě)個(gè)簡(jiǎn)單的使用小例子:
public static void Run()
{
Console.WriteLine($"ServiceStack.Redis 使用示例");
//創(chuàng)建連接池
var pool = new RedisManagerPool("127.0.0.1:6379");
//獲取一個(gè)redis實(shí)例
using var redis = pool.GetClient();
//設(shè)置鍵值對(duì)
var setResult = redis.Set("key1", "value1");
Console.WriteLine($"設(shè)置鍵值對(duì)key1/value1操作結(jié)果:{setResult}");
//獲取鍵對(duì)應(yīng)的值
var value = redis.Get<string>("key1");
Console.WriteLine($"獲取鍵key1對(duì)應(yīng)的值為:{value}");
// 刪除鍵
var delResult = redis.Remove("key1");
Console.WriteLine($"刪除鍵key1操作結(jié)果:{delResult}");
//檢查鍵是否存在
var exists = redis.ContainsKey("key1");
Console.WriteLine($"鍵key1是否存在: {exists}");
}
執(zhí)行結(jié)果如下:
02、StackExchange.Redis
StackExchange.Redis是一款基于.NET的、高性能的、免費(fèi)的、功能全面的、通用的老牌Redis客戶(hù)端。并且支持Redis多節(jié)點(diǎn),Redis集群,IO多路復(fù)用,同步/異步雙編程模型等技術(shù),這也使得其與Redis交互同時(shí)兼具靈活性與高效性,大大提升了Redis讀寫(xiě)的性能與并發(fā)。
同時(shí)它還提供了豐富的高級(jí)功能,包括但不限于管道,連接池,事務(wù),Lua腳本、訂閱/發(fā)布等。序列化與壓縮也提供了多種方式供以選擇,很方便與.NET應(yīng)用程序集成。
下面我們寫(xiě)個(gè)簡(jiǎn)單的使用小例子:
public static void Run()
{
Console.WriteLine($"StackExchange.Redis 使用示例");
// 創(chuàng)建 ConnectionMultiplexer 實(shí)例
using var connection = ConnectionMultiplexer.Connect("127.0.0.1:6379");
//獲取 Redis 數(shù)據(jù)庫(kù)實(shí)例
var redis = connection.GetDatabase();
//設(shè)置鍵值對(duì)
var setResult = redis.StringSet("key1", "value1");
Console.WriteLine($"設(shè)置鍵值對(duì)key1/value1操作結(jié)果:{setResult}");
//獲取鍵對(duì)應(yīng)的值
var value = redis.StringGet("key1");
Console.WriteLine($"獲取鍵key1對(duì)應(yīng)的值為:{value}");
// 刪除鍵
var delResult = redis.KeyDelete("key1");
Console.WriteLine($"刪除鍵key1操作結(jié)果:{delResult}");
//檢查鍵是否存在
var exists = redis.KeyExists("key1");
Console.WriteLine($"鍵key1是否存在: {exists}");
}
執(zhí)行結(jié)果如下:
03、CSRedisCore
CSRedisCore是一款國(guó)人基于開(kāi)源項(xiàng)目csredis上實(shí)現(xiàn)的著名Redis C#/.NET客戶(hù)端庫(kù)。它做到了所有方法名和redis-cli方法名保持一致。它支持Redis 集群、Redis 哨兵和Redis主從分離,以及geo類(lèi)型、流類(lèi)型命令,同時(shí)支持同步/異步接口。
下面我們寫(xiě)個(gè)簡(jiǎn)單的使用小例子:
public static void Run()
{
Console.WriteLine($"CSRedisRedis 使用示例");
// 創(chuàng)建 CSRedisClient 實(shí)例
var redis = new CSRedisClient("127.0.0.1:6379");
//設(shè)置鍵值對(duì)
var setResult = redis.Set("key1", "value1");
Console.WriteLine($"設(shè)置鍵值對(duì)key1/value1操作結(jié)果:{setResult}");
//獲取鍵對(duì)應(yīng)的值
var value = redis.Get("key1");
Console.WriteLine($"獲取鍵key1對(duì)應(yīng)的值為:{value}");
// 刪除鍵
var delResult = redis.Del("key1");
Console.WriteLine($"刪除鍵key1操作結(jié)果:{delResult}");
//檢查鍵是否存在
var exists = redis.Exists("key1");
Console.WriteLine($"鍵key1是否存在: {exists}");
}
執(zhí)行結(jié)果如下:
04、FreeRedis
FreeRedis是CSRedisCore作者的另一個(gè)大作。至少?gòu)倪壿嬌蟻?lái)說(shuō)也應(yīng)該比CSRedisCore更優(yōu)秀,事實(shí)也是如此,F(xiàn)reeRedis在內(nèi)存使用、存儲(chǔ)效率都做了優(yōu)化,在持久化、容錯(cuò)方面也做了改進(jìn),同時(shí)還提供了更多的高級(jí)功能以及自定義選項(xiàng)。我們直接看官方介紹。
單從介紹上來(lái)說(shuō)CSRedisCore有的功能它有,CSRedisCore沒(méi)有的功能它也有。總的來(lái)說(shuō)功能更強(qiáng)大了。另外CSRedisCore目前處于維護(hù)階段已經(jīng)不新增功能了。因此更推薦FreeRedis。
下面我們寫(xiě)個(gè)簡(jiǎn)單的使用小例子:
public static void Run()
{
Console.WriteLine($"FreeRedis 使用示例");
// 創(chuàng)建 CSRedisClient 實(shí)例
var redis = new RedisClient("127.0.0.1:6379");
//設(shè)置鍵值對(duì)
redis.Set("key1", "value1");
Console.WriteLine($"設(shè)置鍵值對(duì)key1/value1操作成功");
//獲取鍵對(duì)應(yīng)的值
var value = redis.Get("key1");
Console.WriteLine($"獲取鍵key1對(duì)應(yīng)的值為:{value}");
// 刪除鍵
var delResult = redis.Del("key1");
Console.WriteLine($"刪除鍵key1操作結(jié)果:{delResult}");
//檢查鍵是否存在
var exists = redis.Exists("key1");
Console.WriteLine($"鍵key1是否存在: {exists}");
}
執(zhí)行結(jié)果如下:
05、NewLife.Redis
NewLife.Redis具有低延時(shí),高性能,高吞吐量以及穩(wěn)定性、可靠性良好,因此在大量實(shí)時(shí)數(shù)據(jù)計(jì)算的應(yīng)用場(chǎng)景有很好的發(fā)揮。它為針對(duì)大數(shù)據(jù)和消息隊(duì)列做了優(yōu)化,使得其可以用支撐日均百億級(jí)的調(diào)用量,而它的連接池可以做到100000個(gè)連接并發(fā)。在包含網(wǎng)絡(luò)通訊的前提下可以把get/set操作做到平均耗時(shí)200~600微秒。其二進(jìn)制序列化方式也更有助于提升數(shù)據(jù)存儲(chǔ)和讀取效率。
下面我們寫(xiě)個(gè)簡(jiǎn)單的使用小例子:
public static void Run()
{
Console.WriteLine($"NewLife.Redis 使用示例");
// 創(chuàng)建 CSRedisClient 實(shí)例
var redis = new FullRedis("127.0.0.1:6379", "", 0);
//設(shè)置鍵值對(duì)
var setResult = redis.Set("key1", "value1");
Console.WriteLine($"設(shè)置鍵值對(duì)key1/value1操作結(jié)果:{setResult}");
//獲取鍵對(duì)應(yīng)的值
var value = redis.Get<string>("key1");
Console.WriteLine($"獲取鍵key1對(duì)應(yīng)的值為:{value}");
// 刪除鍵
var delResult = redis.Remove("key1");
Console.WriteLine($"刪除鍵key1操作結(jié)果:{delResult}");
//檢查鍵是否存在
var exists = redis.ContainsKey("key1");
Console.WriteLine($"鍵key1是否存在: {exists}");
}
06、BeetleX.Redis。
BeetleX.Redis是一款高可用、高性能、異步非阻塞設(shè)計(jì)的.net core客戶(hù)端庫(kù)。并且基本全面覆蓋redis-cli指令,提供了多種序列化方式,使用簡(jiǎn)單輕松。
下面我們寫(xiě)個(gè)簡(jiǎn)單的使用小例子:
public static async Task RunAsync()
{
Console.WriteLine($"BeetleX.Redis 使用示例");
// 創(chuàng)建 CSRedisClient 實(shí)例
RedisDB redis = new RedisDB(0)
{
DataFormater = new JsonFormater()
};
//添加寫(xiě)主機(jī)
redis.Host.AddWriteHost("127.0.0.1", 6379);
//添加讀主機(jī)
redis.Host.AddReadHost("127.0.0.1", 6379);
//設(shè)置鍵值對(duì)
var setResult = await redis.Set("key1", "value1");
Console.WriteLine($"設(shè)置鍵值對(duì)key1/value1操作結(jié)果:{setResult}");
//獲取鍵對(duì)應(yīng)的值
var value = await redis.Get<string>("key1");
Console.WriteLine($"獲取鍵key1對(duì)應(yīng)的值為:{value}");
// 刪除鍵
var delResult = await redis.Del("key1");
Console.WriteLine($"刪除鍵key1操作結(jié)果:{delResult}");
//檢查鍵是否存在
var exists = await redis.Exists("key1");
Console.WriteLine($"鍵key1是否存在: {exists}");
}
執(zhí)行結(jié)果如下:
07、總結(jié)
ServiceStack.Redis:綜合功能全面,適合需要商業(yè)支持的用戶(hù)。
StackExchange.Redis:官方推薦,功能全面,社區(qū)支持良好,文檔豐富。
CSRedisCore:功能齊全,簡(jiǎn)單易用,適合快速開(kāi)發(fā)。
FreeRedis:高性能,功能齊全,簡(jiǎn)單易用,適合快速開(kāi)發(fā)。
NewLife.Redis:高性能,高并發(fā),低延遲,分布式場(chǎng)景適合使用。
BeetleX.Redis。:高可用,高性能,異步操作,適合高負(fù)載場(chǎng)景。
注:測(cè)試方法代碼以及示例源碼都已經(jīng)上傳至代碼庫(kù),有興趣的可以看看。https://gitee.com/hugogoos/Planner
轉(zhuǎn)自https://www.cnblogs.com/hugogoos/p/18409367
該文章在 2024/9/12 10:41:34 編輯過(guò)