欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#使用csredis操作redis的示例

 更新時間:2020年12月01日 09:02:39   作者:小Y  
這篇文章主要介紹了c#使用csredis操作redis的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下

現(xiàn)在流行的redis連接客戶端有StackExchange.Redis和ServiceStack.Redis,為什么選擇csredis而不是這兩個?

  • .net 最有名望的 ServiceStack.Redis 早已淪為商業(yè)用途,在 .NETCore 中使用只能充值;
  • 后來居上的 StackExchange.Redis 雖然能用,但線上各種 Timeout 錯誤把人坑到?jīng)]脾氣,兩年多兩年多兩年多都不解決,最近發(fā)布的 2.0 版本不知道是否徹底解決了底層。
  • csredis支持.net40/.net45/.netstandard2.0,基本上滿足了常見運行平臺,而上面兩個基本已經(jīng)放棄.net40了。
  • csredis所有方法名與redis-cli保持一持,很容易上手?。?!

環(huán)境:

csredis 源碼地址: https://github.com/2881099/csredis

1.在.net項目中引入CSRedisCore

包安裝命令:

Install-Package CSRedisCore -Version 3.6.5

2.使用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApp1
{
  class Program
  {
    static void Main(string[] args)
    {
      //根據(jù)連接信息構(gòu)造客戶端對象
      var redis = new CSRedis.CSRedisClient("192.168.3.42:6500,password=123456,defaultDatabase=0,poolsize=500,ssl=false,writeBuffer=10240,prefix=test_");
      //redis中的string存取
      redis.Set("name", "小明");
      var name= redis.Get("name");
      Console.WriteLine($"name={name}");

      redis.Set("birth", DateTime.Now);
      var birth = redis.Get<DateTime>("birth");
      Console.WriteLine($"birth={birth}");

      redis.Set("info", new {sex="female",age="20" });
      var info = redis.Get<object>("info");
      Console.WriteLine($"info={info}");

      Console.WriteLine("ok");
      Console.ReadLine();
    }
  }
}

3.高級玩法:發(fā)布訂閱

//普通訂閱
rds.Subscribe(
 ("chan1", msg => Console.WriteLine(msg.Body)),
 ("chan2", msg => Console.WriteLine(msg.Body)));

//模式訂閱(通配符)
rds.PSubscribe(new[] { "test*", "*test001", "test*002" }, msg => {
 Console.WriteLine($"PSUB  {msg.MessageId}:{msg.Body}  {msg.Pattern}: chan:{msg.Channel}");
});
//模式訂閱已經(jīng)解決的難題:
//1、分區(qū)的節(jié)點匹配規(guī)則,導致通配符最大可能匹配全部節(jié)點,所以全部節(jié)點都要訂閱
//2、本組 "test*", "*test001", "test*002" 訂閱全部節(jié)點時,需要解決同一條消息不可執(zhí)行多次

//發(fā)布
rds.Publish("chan1", "123123123");
//無論是分區(qū)或普通模式,rds.Publish 都可以正常通信

4.高級玩法:緩存殼

//不加緩存的時候,要從數(shù)據(jù)庫查詢
var t1 = Test.Select.WhereId(1).ToOne();

//一般的緩存代碼,如不封裝還挺繁瑣的
var cacheValue = rds.Get("test1");
if (!string.IsNullOrEmpty(cacheValue)) {
  try {
    return JsonConvert.DeserializeObject(cacheValue);
  } catch {
    //出錯時刪除key
    rds.Remove("test1");
    throw;
  }
}
var t1 = Test.Select.WhereId(1).ToOne();
rds.Set("test1", JsonConvert.SerializeObject(t1), 10); //緩存10秒

//使用緩存殼效果同上,以下示例使用 string 和 hash 緩存數(shù)據(jù)
var t1 = rds.CacheShell("test1", 10, () => Test.Select.WhereId(1).ToOne());
var t2 = rds.CacheShell("test", "1", 10, () => Test.Select.WhereId(1).ToOne());
var t3 = rds.CacheShell("test", new [] { "1", "2" }, 10, notCacheFields => new [] {
 ("1", Test.Select.WhereId(1).ToOne()),
 ("2", Test.Select.WhereId(2).ToOne())
});

5.高級玩法:管道

使用管道模式,打包多條命令一起執(zhí)行,從而提高性能。

var ret1 = rds.StartPipe().Set("a", "1").Get("a").EndPipe();
var ret2 = rds.StartPipe(p => p.Set("a", "1").Get("a"));

var ret3 = rds.StartPipe().Get("b").Get("a").Get("a").EndPipe();
//與 rds.MGet("b", "a", "a") 性能相比,經(jīng)測試差之毫厘

6.高級玩法:多數(shù)據(jù)庫

var connectionString = "127.0.0.1:6379,password=123,poolsize=10,ssl=false,writeBuffer=10240,prefix=key前輟";
var redis = new CSRedisClient[14]; //定義成單例
for (var a = 0; a< redis.Length; a++) redis[a] = new CSRedisClient(connectionString + "; defualtDatabase=" + a);

//訪問數(shù)據(jù)庫1的數(shù)據(jù)
redis[1].Get("test1");

7.性能比拼

以上就是c#使用csredis操作redis的示例的詳細內(nèi)容,更多關(guān)于c# csredis操作redis的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#通過rabbitmq實現(xiàn)定時任務(wù)(延時隊列)

    C#通過rabbitmq實現(xiàn)定時任務(wù)(延時隊列)

    工作中經(jīng)常會有定時任務(wù)的需求,常見的做法可以使用Timer、Quartz、Hangfire等組件,本文使用C#通過rabbitmq實現(xiàn)定時任務(wù)(延時隊列),感興趣的可以了解一下
    2021-05-05
  • C#中整理了幾種字符串截取方法小結(jié)

    C#中整理了幾種字符串截取方法小結(jié)

    本文給大家整理了幾種字符串截取方法,?(Substring);(Remove);(Replace)方法和split方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • C#使用Spire.PDF for .NET實現(xiàn)PDF轉(zhuǎn)SVG

    C#使用Spire.PDF for .NET實現(xiàn)PDF轉(zhuǎn)SVG

    在現(xiàn)代Web開發(fā)和圖形處理中,對于文檔和圖像格式的靈活轉(zhuǎn)換需求日益增長,本文將深入探討如何利用強大的 Spire.PDF for .NET 庫,準確地將PDF文件轉(zhuǎn)換為SVG文件,感興趣的小伙伴可以了解下
    2025-09-09
  • C#使用doggleReport生成pdf報表的方法

    C#使用doggleReport生成pdf報表的方法

    這篇文章主要介紹了C#使用doggleReport生成pdf報表的方法,結(jié)合實例形式分析了C# doggleReport安裝及使用具體操作技巧,需要的朋友可以參考下
    2017-06-06
  • c#二叉樹存儲介紹

    c#二叉樹存儲介紹

    大家好,本篇文章主要講的是c#二叉樹存儲介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C#爬取動態(tài)網(wǎng)頁上信息得流程步驟

    C#爬取動態(tài)網(wǎng)頁上信息得流程步驟

    動態(tài)內(nèi)容網(wǎng)站使用 JavaScript 腳本動態(tài)檢索和渲染數(shù)據(jù),爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的,這篇文章主要給大家詳細介紹了C#爬取動態(tài)網(wǎng)頁上信息得流程步驟,需要的朋友可以參考下
    2024-10-10
  • C#實現(xiàn)簡單打字小游戲

    C#實現(xiàn)簡單打字小游戲

    這篇文章主要為大家詳細介紹了C#實現(xiàn)簡單打字小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C#中的并發(fā)編程與.NET任務(wù)并行庫的使用示例和常見問題

    C#中的并發(fā)編程與.NET任務(wù)并行庫的使用示例和常見問題

    在現(xiàn)代軟件開發(fā)中,.NET Framework通過引入任務(wù)并行庫(TPL)和并發(fā)集合類型,簡化了并發(fā)復雜性,提高程序的性能、可維護性和可擴展性,并發(fā)集合設(shè)計上允許多線程安全訪問,此外,TPL通過Task類簡化異步操作,正確使用這些工具可避免死鎖和競爭條件等常見問題
    2024-09-09
  • Unity中3DText顯示模糊不清的解決方案

    Unity中3DText顯示模糊不清的解決方案

    這篇文章主要介紹了Unity中3DText顯示模糊不清的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#基于jwt實現(xiàn)分布式登錄

    C#基于jwt實現(xiàn)分布式登錄

    這篇文章主要介紹了C#基于jwt實現(xiàn)分布式登錄的步驟,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-02-02

最新評論