【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
问题描述
C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间?
Redis维护说明:
Redis 服务维护时,会把副本节点提升为主节点,且旧主节点关闭现有连接时,这个时候,原有客户端的所有连接都将断开,并通过客户端Retry机制马上连接到新的主节点,这个过程被称为故障转移。
计划的故障转移发生在两个不同的时间:
- 系统更新,例如 Redis 修补或 OS 升级。
- 管理操作,例如缩放和重新启动。
正常情况下,故障转移的时间在1秒左右完成,如果出现异常,则需要10-15秒完成。
但是,并不是所有的客户端都能在发生故障转移后马上恢复连接,所以就需要考虑冲客户端代码,配置方面来优化此种情况所带来的后果。
问题解答
在Azure官方文档中,C# 连接Redis的客户端工具为 StackExchange.Redis, 文章中对它有比较详细的说明:
- 在极少数情况下,Stackexchange.redis 在连接中断后无法重新连接。 在这些情况下,重新启动客户端或创建新的
ConnectionMultiplexer
可解决此问题。 建议使用单一实例ConnectionMultiplexer
模式,同时允许应用定期强制重新连接。 ConnectionMultiplexer
的用户必须处理因处置该类的旧实例而可能发生的任何ObjectDisposedException
错误。- 针对
RedisConnectionExceptions
和RedisSocketExceptions
调用ForceReconnectAsync()
。 也可以针对RedisTimeoutExceptions
调用ForceReconnectAsync()
,但前提是你使用大量的ReconnectMinInterval
和ReconnectErrorThreshold
。 否则,建立新连接可能会导致超时的服务器发生连锁故障,因为服务器已过载。
Demo参考:https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet-core
【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间的更多相关文章
- Windows Azure Redis 缓存服务
8月20日,Windows Azure (中国版)开始提供Redis缓存服务,比较国际版的Microsoft Azure晚了差不多一年的时间.说实话,微软真不应该将这个重要的功能delay这么长时间, ...
- ABP从入门到精通(3):aspnet-zero-core 使用Redis缓存
一.Redis是什么? redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset ...
- Redis缓存相关问题总结
使用缓存是系统性能优化的第一黄金法则. 缓存的设计和使用对一个系统的性能至关重要,平时接触到项目无论多少也都会在某些层面用到缓存,比如用HashMap实现,Ehcache,memcached.redi ...
- Redis缓存的设计、性能、应用与数据集群同步
Redis缓存的设计.性能.应用与数据集群同步 http://youzhixueyuan.com/design-performance-and-application-of-redis-cache.h ...
- SpringBoot缓存管理(二) 整合Redis缓存实现
SpringBoot支持的缓存组件 在SpringBoot中,数据的缓存管理存储依赖于Spring框架中cache相关的org.springframework.cache.Cache和org.spri ...
- 4-11 CS后台项目-4 及 Redis缓存数据
使用Redis缓存数据 使用Redis可以提高查询效率,一定程度上可以减轻数据库服务器的压力,从而保护了数据库. 通常,应用Redis的场景有: 高频查询,例如:热搜列表.秒杀 改变频率低的数据,例如 ...
- spring boot redis缓存JedisPool使用
spring boot redis缓存JedisPool使用 添加依赖pom.xml中添加如下依赖 <!-- Spring Boot Redis --> <dependency> ...
- 使用redis缓存数据需要注意的问题以及个人的一些思考和理解
之前我有博客也尝试过使用redis,在实际的项目中确实作用挺大的.至少对于数据的频繁读取来说都起着至关重要的作用. 但是随着技术的学习,慢慢的业务要复杂起来,以后也许会用到redis集群,所以在这边查 ...
- SpringBoot集成Redis分布式锁以及Redis缓存
https://blog.csdn.net/qq_26525215/article/details/79182687 集成Redis 首先在pom.xml中加入需要的redis依赖和缓存依赖 < ...
- Redis缓存雪崩、缓存穿透、缓存击穿、缓存降级、缓存预热、缓存更新
Redis缓存能够有效地加速应用的读写速度,就DB来说,Redis成绩已经很惊人了,且不说memcachedb和Tokyo Cabinet之流,就说原版的memcached,速度似乎也只能达到这个级别 ...
随机推荐
- 文盘Rust -- 如何把配置文件打包到二进制文件里
在实际开发中,经常会遇到各种不同的配置文件.通常,程序运行的各种配置从外部读取,以增强应用配置的灵活性.java 生态中的 springboot 提供了这种设计的典范.springboot 的应用程 ...
- kettle系统列文章02---如何建立一个转换
1.连接mysql 主对象树---->DB连接---->新建 2.连接sqlserver 主对象树--->DB连接----->新建 3.设置数据库为共享:在db上右键---&g ...
- 期盼已久全平台支持-开源IM项目OpenIM之uniapp更新
国内uniapp使用广泛,OpenIM的uniapp sdk以及文档和demo (https://github.com/OpenIMSDK/Open-IM-Uniapp-Demo)都已更新,本文主要展 ...
- Git的使用(一):创建本地仓库并在其中添加、修改、删除文件
创建本地版本库 版本库又名仓库,英文名repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者 ...
- TC插件管理器及在TC中新建文件
新建文件 Shift+F4可以新建文件,但是会调用内置的编辑器来打开. 在设置中通过修改F4快捷键对应的程序来修改. PS.F4编辑没找到根据扩展名来调用指定程序打开,可以F3中进行补充. NewFi ...
- CF1921F Sum of Progression 题解
题目链接:CF 或者 洛谷 一道经典的类型题,把这种类型的题拿出来单独说一下. 注意到问题中涉及到需要维护 \(a_{x+k\times step}\) 这样的信息,这样的信息很难用树型结构维护,比较 ...
- pandas教程02: 查找表中数据
在上篇教程中,我们介绍了pandas的安装.数据的导入与导出以及删除行列的操作.这次让我们一起研究下在pandas中如何根据指定的条件查找表中数据. 1. 数据准备 这次,我们使用一张学生成绩 ...
- Collectors.toMap的暗坑与避免方式
使用Java的stream中的Collectors可以很方便地做容器间的转换,可以少写很多代码.但是其中有暗含的坑需要注意和避免,本文探讨Collectors.toMap(JDK8版本). Colle ...
- Sea-Search03总结&&un finish
使用到的设计模式 Facade门面模式 为何使用? 在搜索项目中,由于使用Mvc架构且数据库中各种不同类型的数据源并没有放在同一张表,于是我们不可避免的在Controller中需要注入多个servic ...
- Oracle ADG + Keepalived 切换演练
客户的一套生产环境采用的架构是Oracle ADG + Keepalived,近期需要进行切换演练,要求我这边保障.ADG本身切换倒没啥可说的,但引入keepalived软件,就需要提前研究下这个架构 ...