asp.net core 实战之 redis 负载均衡和“高可用“实现
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:50
1.概述
分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是传统意义的高可用哈,而是 redis集群挂了,并不影响asp.net core 的运行, 欲知详情,请看下文.
注意: 本文主要阐述redis 的复制均衡和"高可用", 故redis 的主从复制搭建略, 请自行百度.
2.负载均衡实现
目前在tcp 负载均衡这块, haproxy 是官方实现, nginx 是三方实现, 个人偏向haproxy的简单易用. 故redis的负载均衡采用haproxy实现.
Haproxy配置文件如下:
其中最后的配置:

为redis的负载均衡配置, 可以看到负载了两个redis IP, 101和102 .
在实际运行中, redis的主库一般用作写, 从库用作读, so , 一般针对redis的从库进行负载.
只需将上面的两个IP 替换为自己的ip 即可完成对 redis 从库的负载.
3. asp.net core 端针对 redis "高可用"实现
实现思路: 此处的实现不是传统意义的高可用实现,而是C#端检测到redis集群挂了, 自动将redis从系统中剔除, 保证asp.net core 能继续运行
业界问题: redis 的高可用有官方实现叫sentinel , 现在应用案例并不多, 也逮到官方文档看了哈, 看了半天没看到, 有sentinel实战教程推荐的,或其他高可用实现的, 望留言 ^_^
先下载完整源码: http://pan.baidu.com/s/1i52ViWP
源码配置运行步骤如下:
如下图
3.1.配置VIPPort的值为 haproxy 暴露的redis 集群端口,如下图值

3.2.配置ClusterVIPCom值为 haproxy 所在服务器 的 IP
3.3.配置ClusterMultiIPCom 值为 redis主从复制集群中的全部从库IP, 用分号分割IP
3.4. 代码运行起来, 调用 Sample 接口, 如下图

调用URL: Get方法 http://localhost:9526/api/RedisTest/Sample
运行逻辑如下:
第一次取数据, redis没得缓存, 制造缓存对象, 缓存到redis, 成功返回.
第二次取数据, redis 有缓存, 从缓存中取, 成功返回.
第三次取数据, 假如redis挂了, 制造缓存对象, 还是成功返回.
第四次取数据, redis恢复了, 重启 asp.net core , 程序自动连接上redis, 从redis返回数据, 成功返回.
至此达到了, redis 和 asp.net core 的完全解耦, 即redis挂了不影响 asp.net core 的继续运行 .
可以想象哈, 当你半夜收到一个警报说redis挂了的时候, 你可以不慌不忙的去公司慢慢改, 因为asp.net core 还在运行, 只是慢了点而已.
相关文章
-
ASP.NET Core 使用 Redis 实现分布式缓存:Docker
ASP.NET Core 使用 Redis 实现分布式缓存:Docker
- 互联网
- 2026年04月04日
-
ASP.Net Core 使用Redis实现分布式缓存
ASP.Net Core 使用Redis实现分布式缓存
- 互联网
- 2026年04月04日
-
ASP.NET Core 微信支付(三)【查询订单 APIV3】
ASP.NET Core 微信支付(三)【查询订单 APIV3】
- 互联网
- 2026年04月04日
-
Asp.net Boilerplate之AbpSession扩展
Asp.net Boilerplate之AbpSession扩展
- 互联网
- 2026年04月04日
-
ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区
ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区
- 互联网
- 2026年04月04日
-
ascx aspx ashx asmx 文件的作用
ascx aspx ashx asmx 文件的作用
- 互联网
- 2026年04月04日





