zoukankan      html  css  js  c++  java
  • Redis的使用(三)—— .NET 使用 Redis

    一、安装 ServiceStack.Redis Nuget程序包

     通过Nuget添加ServiceStack.Redis程序包,添加成功后,即可进行程序的开发。

    二、Redis的写入读取、订阅发布

     1  public class RedisClient
     2     {
     3         private ServiceStack.Redis.RedisClient client = null;
     4 
     5         // 发布消息的客户端
     6         private ServiceStack.Redis.RedisClient client_pub = null;
     7 
     8         public RedisClient(string ip,int port,string password=null,int db=0)
     9         {
    10             client     = new ServiceStack.Redis.RedisClient(ip, port, password, db);
    11             client_pub = new ServiceStack.Redis.RedisClient(ip, port, password, db);
    12             Console.WriteLine($"redis启动成功!");
    13         }
    14 
    15         /// <summary>
    16         /// 读取
    17         /// </summary>
    18         /// <typeparam name="T"></typeparam>
    19         /// <param name="key"></param>
    20         /// <returns></returns>
    21         public T GetKeyValue<T>(string key)
    22         {
    23 
    24             return client.Get<T>(key);
    25         }
    26 
    27         /// <summary>
    28         /// 存储
    29         /// </summary>
    30         /// <typeparam name="T"></typeparam>
    31         /// <param name="key"></param>
    32         /// <param name="value"></param>
    33         /// <returns></returns>
    34         public bool SetKeyValue<T>(string key,T value)
    35         {
    36            return  client.Set<T>(key,value);
    37         }
    38 
    39 
    40         /// <summary>
    41         /// 订阅
    42         /// </summary>
    43         public void Subscribe()
    44         {
    45             //创建订阅
    46             IRedisSubscription subscription = client.CreateSubscription();
    47 
    48             //接受到消息时
    49             subscription.OnMessage += (channel,cmd)=>
    50             {
    51                 Console.WriteLine($"接受到消息时:消息通道:{channel},消息内容:{cmd}");
    52             };
    53 
    54             //订阅频道时
    55             subscription.OnSubscribe = (channel) =>
    56             {
    57                 Console.WriteLine($"订阅客户端:开始订阅消息通道:{channel}");
    58             };
    59 
    60             //取消订阅频道时
    61             subscription.OnUnSubscribe = (channel) => 
    62             { 
    63                 Console.WriteLine($"订阅客户端:取消订阅消息通道:{channel}");
    64             };
    65 
    66             //订阅频道
    67             subscription.SubscribeToChannels("channel1", "channel2");
    68         }
    69 
    70         public void Publish()
    71         {
    72             client_pub.PublishMessage("channel1", $"{DateTime.Now.ToShortTimeString()} 通道 channel1 的消息");
    73             client_pub.PublishMessage("channel2", $"{DateTime.Now.ToShortTimeString()} 通道 channel1 的消息");
    74         }
    75     }
     1  static void Main(string[] args)
     2         {
     3             var redis = new RedisClient("127.0.0.1", 6379);
     4 
     5             // 写入
     6             redis.SetKeyValue<string>("name", "dwayne");
     7             redis.SetKeyValue<int>("age", 26);
     8 
     9             // 读取
    10             Console.WriteLine($"name的数值:{redis.GetKeyValue<string>("name")}");
    11             Console.WriteLine($"age的数值:{redis.GetKeyValue<string>("age")}");
    12 
    13 
    14 
    15             // 订阅
    16             Task.Run(() =>
    17             {
    18                 redis.Subscribe();
    19             });
    20 
    21             // 发布
    22             Console.WriteLine("是否启动Redis发布:Y(启动),N(不启动)");
    23             if (Console.ReadLine() == "Y")
    24             {
    25                 redis.Publish();
    26             }
    27 
    28             Console.ReadKey();
    29         }

    具体运行结果如下图所示:

    示例代码:https://github.com/Dwayne112401/RedisDemo

     注意:发布和订阅不能是同一个Redis连接,发布和订阅必须各自启动Redis连接,否则会报错 “only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context”。

  • 相关阅读:
    微信小程序非域名测试环境,手机预览不正常,模拟器和真机调试正常解决办法
    vue 建项目及初步开发遇到的问题
    开发&测试
    架构&项目
    运维
    读书&源码
    ArrayList
    jdk集合知识点整理
    jdk集合关系图
    jvm知识点整理
  • 原文地址:https://www.cnblogs.com/dongweian/p/14111535.html
Copyright © 2011-2022 走看看