StackExchange.Redis 系列 6:Events 说明

  • 本系列博文是“伪”官方文档翻译,并非完全将官方文档进行翻译,而是我在查阅、测试原始文档并转换为自己东西后进行的“准”翻译。
  • 原始文档见此:https://stackexchange.github.io/StackExchange.Redis/
  • 本系列本博文基于 redis 5.0.6,系列中部分博文跟官方文档有出入,有不同见解 / 说明不当的地方,还请大家不吝拍砖。

ConnectionMultiplexer 对外提供了多个事件以便让你可以捕获内部执行情况,你可以通过这些事件按需记录日志。

事件

  • ConfigurationChanged:当 ConnectionMultiplexer 中的连接发生改变的时候该事件会被触发。
  • ConfigurationChangedBroadcast:当通过 pub/sub 接收到重新配置的消息时,该事件会被触发。通常情况下,引发该事件的是调用 IServer.MakeMaster 去改变一个节点的副本配置(该节点可以将此类请求广播到所有客户端。)
  • ConnectionFailed:任何原因导致物理连接失败的时候会触发该事件。在下次连接被重新成功建立前,该事件只会触发一次。
  • ConnectionRestored:在上一次连接失败后,连接重新被建立(恢复)的时候,会触发该事件。
  • ErrorMessage:当 Redis 服务端用错误信息响应客户端请求的时候,该事件会被触发。另外,触发该事件后,常规的异常/错误依然会返回/告知到调用方。
  • HashSlotMoved:使用“redis 集群”的时候,当 hash-slot 在节点间发生迁移的时候,该事件就会别触发。注意,请求会自动重新路由,一般用户不需要做什么特殊操作。
  • InternalError:当 StackExchange.Redis 库内部发生错误的时候会触发该事件,一般在 DEBUG 的时候可以使用该事件。

请注意,StackExchange.Redis中的 pub/sub 实现与事件类似,Subscribe / SubscribeAsync 方法接受一个 Action<RedisChannel,RedisValue> 回调,该回调在收到消息时会被触发。