狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Redis 入門(mén) - C#.NET Core客戶(hù)端庫(kù)六種選擇

freeflydom
2024年9月12日 10:39 本文熱度 810

給大家介紹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ò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved