应无所住,而生其心
排名
69
文章
7
粉丝
2
评论
4
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

net core使用servicestack.redis连接redis,读写分离

8243人阅读 2019/12/2 12:04 总访问:5182577 评论:0 收藏:0 手机
分类: Redis


servicestack.redis5.7版本开始支持net core 3.x

官网地址:https://servicestack.net/redis


下载:
Install-Package ServiceStack.Redis

或者:

  1. <ItemGroup>
  2.   <PackageReference Include="ServiceStack.Redis" Version="5.7.0" />
  3. </ItemGroup>



读写分离类:
用于获取实例

  1. public class SingletonRedis
  2. {
  3.     private static PooledRedisClientManager poolrl;
  4.     private static readonly object obj = new object();
  5.     // 定义私有构造函数,使外界不能创建该类实例
  6.     private SingletonRedis()
  7.     {
  8.     }
  9.     /// <summary>
  10.     /// 获取Redis写节点(写的时候就获取主节点,这样可以在分布式的环境下可写)
  11.     /// </summary>
  12.     /// <returns></returns>
  13.     public static RedisClient GetInstance()
  14.     {
  15.         // 如果连接池的实例不存在则创建,否则直接返回
  16.         if (poolrl == null)
  17.         {
  18.             lock (obj)
  19.             {
  20.                 if (poolrl == null)
  21.                 {
  22.                     CreatePoolManager();
  23.                 }
  24.             }
  25.         }
  26.         return poolrl.GetClient() as RedisClient;
  27.     }
  28.     /// <summary>
  29.     /// 获取Redis读节点(读取的时候就读取本地的,这样效率就会很快)
  30.     /// </summary>
  31.     /// <returns></returns>
  32.     public static RedisClient GetReadOnlyInstance()
  33.     {
  34.         if (poolrl == null)
  35.         {
  36.             lock (obj)
  37.             {
  38.                 if (poolrl == null)
  39.                 {
  40.                     CreatePoolManager();
  41.                 }
  42.             }
  43.         }
  44.         return poolrl.GetReadOnlyClient() as RedisClient;
  45.     }
  46.     private static void CreatePoolManager()
  47.     {
  48.         //写节点(主节点)
  49.         List<string> writes = new List<string>();
  50.         writes.Add("127.0.0.1:6379");
  51.         //读节点
  52.         List<string> reads = new List<string>();
  53.         reads.Add("127.0.0.1:6379");
  54.         //配置连接池和读写分离
  55.         poolrl = new PooledRedisClientManager(writes, reads, new RedisClientManagerConfig()
  56.         {
  57.             MaxReadPoolSize = 66//读节点个数
  58.             MaxWritePoolSize = 50,//写节点个数
  59.         });
  60.     }
  61. }

简单示例:

代码如下:

  1. public class ConfigRedis : IConfigRedis
  2. {
  3.     public string QueryConfigByKey(string key)
  4.     {
  5.         using (RedisClient redis = SingletonRedis.GetReadOnlyInstance())
  6.         {
  7.             string value = redis.Get<string>(key);
  8.             return value;
  9.         }
  10.     }
  11.     public void AddConfig(string key, string value)
  12.     {
  13.         using (RedisClient redis = SingletonRedis.GetInstance())
  14.         {
  15.             redis.Add<string>(key, value);
  16.         }
  17.     }
  18. }


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价