亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

c#使用csredis操作redis的示例

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

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

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

環(huán)境:

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

1.在.net項(xiàng)目中引入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)造客戶(hù)端對(duì)象
      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.高級(jí)玩法:發(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é)點(diǎn)匹配規(guī)則,導(dǎo)致通配符最大可能匹配全部節(jié)點(diǎn),所以全部節(jié)點(diǎn)都要訂閱
//2、本組 "test*", "*test001", "test*002" 訂閱全部節(jié)點(diǎn)時(shí),需要解決同一條消息不可執(zhí)行多次

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

4.高級(jí)玩法:緩存殼

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

//一般的緩存代碼,如不封裝還挺繁瑣的
var cacheValue = rds.Get("test1");
if (!string.IsNullOrEmpty(cacheValue)) {
  try {
    return JsonConvert.DeserializeObject(cacheValue);
  } catch {
    //出錯(cuò)時(shí)刪除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.高級(jí)玩法:管道

使用管道模式,打包多條命令一起執(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)測(cè)試差之毫厘

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

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);

//訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)1的數(shù)據(jù)
redis[1].Get("test1");

7.性能比拼

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

相關(guān)文章

  • 詳解C#枚舉中使用Flags特性

    詳解C#枚舉中使用Flags特性

    這篇文章主要介紹了C#枚舉中使用Flags特性的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • C# DI依賴(lài)注入的實(shí)現(xiàn)示例

    C# DI依賴(lài)注入的實(shí)現(xiàn)示例

    依賴(lài)注入是一種實(shí)現(xiàn)的方法,用于減少代碼之間的耦合,本文主要介紹了C# DI依賴(lài)注入的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣可以了解一下
    2023-12-12
  • C#使用LINQ中Enumerable類(lèi)方法的延遲與立即執(zhí)行的控制

    C#使用LINQ中Enumerable類(lèi)方法的延遲與立即執(zhí)行的控制

    這篇文章主要介紹了C#的LINQ查詢(xún)中Enumerable類(lèi)方法的延遲與立即執(zhí)行,LINQ語(yǔ)言集成查詢(xún)可以讓C#和VB以查詢(xún)數(shù)據(jù)庫(kù)相同的方式操作內(nèi)存數(shù)據(jù),需要的朋友可以參考下
    2016-03-03
  • c#中的擴(kuò)展方法學(xué)習(xí)筆記

    c#中的擴(kuò)展方法學(xué)習(xí)筆記

    擴(kuò)展方法能夠向現(xiàn)有類(lèi)型“添加”方法,而無(wú)需創(chuàng)建新的派生類(lèi)型,重新編譯或以其他方式修改原始類(lèi)型。下面這篇文章主要給大家介紹了關(guān)于c#中擴(kuò)展方法學(xué)習(xí)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-11-11
  • c#調(diào)整圖片分辨率的實(shí)現(xiàn)示例

    c#調(diào)整圖片分辨率的實(shí)現(xiàn)示例

    本文主要介紹了c#調(diào)整圖片分辨率的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • c# 圖片加密解密的實(shí)例代碼

    c# 圖片加密解密的實(shí)例代碼

    這篇文章介紹了c# 圖片加密解密的實(shí)例代碼,有需要的朋友可以參考一下
    2013-08-08
  • 再談異常處理try catch finally

    再談異常處理try catch finally

    這篇文章主要介紹了再談異常處理try catch finally 的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • c#中使用BackgroundWorker的實(shí)現(xiàn)

    c#中使用BackgroundWorker的實(shí)現(xiàn)

    本文主要介紹了c#中使用BackgroundWorker的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C#實(shí)現(xiàn)保存文件時(shí)重名自動(dòng)生成新文件的方法

    C#實(shí)現(xiàn)保存文件時(shí)重名自動(dòng)生成新文件的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)保存文件時(shí)重名自動(dòng)生成新文件的方法,涉及C#針對(duì)保存文件時(shí)出現(xiàn)重命名情況的自動(dòng)處理技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#多線(xiàn)程系列之原子操作

    C#多線(xiàn)程系列之原子操作

    本文詳細(xì)講解了C#多線(xiàn)程的原子操作,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02

最新評(píng)論