tnblog
首页
视频
资源
登录
愿你出走半生,归来仍是少年
排名
3
文章
317
粉丝
22
评论
14
bootstrap 栅格布局一小例子
剑轩 : 后端写样式有点痛苦哇
一点flex布局的运用
剑轩 : 后端写样式有点痛苦哇
vue.js常用指令
剑轩 : 可以可以,多总结一点
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

.net redis读写分离

5848人阅读 2020/3/1 17:22 总访问:2062805 评论:3 收藏:2 手机
分类: NET

封装一下获取redis实例的类:

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

这样我们想要去写入缓存的时候就调用 GetInstance方法,如果是想要读的话就调用CreatePoolManager方法,通常读节点配置成本地缓存,这样效率快一点。

我们可以测试获取一下一下读节点,上面我们读接口设置了两个看看获取的情况:

我们可以看到找到6380的次数是10次,刚好是我们循环次数的一半,说明负载均衡做得不错哇

当然大家还可以试试去获取读节点



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

评价

尘叶心繁

2020/3/3 15:04:59

建议使用新的明星库:StackExchange.Redis

青春年华

2020/3/4 17:33:03

青春年华

2020/3/4 17:34:06

Good!

Service-stack.redis配置连接池与读写分离(处理并发相关等)

配置连接池与读写分类 //写节点(主节点) List&lt;string&gt;writes=newList&lt;string&gt;(); writes.Add(&quot;123456a...

MySQL主从复制+读写分离

使用Mysql读写分离和主从复制的原因:*单台MySQL服务器的安全性,高可用性,高并发都是不满足实际的生产需要。介绍:1.MySQ...

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

servicestack.redis5.7版本开始支持net core 3.x官网地址:https://servicestack.net/redis下载:Install-Package ServiceS...

ajaxget时请求异步缓存

ajax中的get为何有时执行,有时不执行?(九十岁老太为何起死回生,数百头母猪为何半夜惨叫;女生宿舍为何频频失窃,超市方...

百度编辑器本地缓存

百度编辑器默认有本地缓存。存储在localstorage中。可以防止用户在写文章的时候意外关闭后不至于之前写的内容会丢失读取本...

修改了css后,让浏览器从缓存中更新

当我们修改了css后,如果不做一些操作,浏览器是不会自动更新我们的样式文件的。除非是过期或者用户手动刷新清理缓存等。所...

没有为 SQL 缓存通知启用数据库

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql -S 数据库IP -U 登录名 -P 密码 -d 数据库名称 -t 表名 -et

添加缓存区提升计算机的读写性能

哈喽,大家好,我是刘小贱。今天呢,刘小贱给大家分享一款运行在windoes系统上的神器软件,软件名:PrimoCache这款软件呢是通...

缓存穿透、缓存击穿、缓存雪崩区别

一、缓存穿透 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存...

.net 微信开发获取access_token使用缓存处理token过期

获取access_token很简单,使用httpclient发起一个请求就可以了,我们使用redis做一下缓存处理publicstaticstringGetToken()...

.netcore 使用缓存

1.Startup.csservices.AddMemoryCache(); services.AddMvc();2.封装Logger类[Route(&quot;api/todo&quot;)] [Authorize] ...

Redis-缓存

今天我讲一下 Redis缓存的问题Tedis缓存是存到内存中的数据库是存到硬盘中的我们把这个安装包解压好然后 解压好 按住Shift...

Redis 数据缓存

Redis缓存操作(添加缓存,删除缓存,修改缓存)的代码实现 首先介绍一下:Redis支持五种数据类型:String(字符串),hash...

给toke一个缓存,防止多次访问

Redis 缓存一个toke 代码如下:publicstaticstringGetToken() { RedisClientredisClient=newRedisClient(); //先从缓存...

Redis缓存Token+设置过期时间+后台设置菜单

今天我们记录一下后台访问接口+Redis缓存数据首先我们要调一下接口这里我们要拿到数据(Token)的话 需要反序列化因为我这个...