简体   繁体   English

ServiceStack.Redis 无法连接到 Digitalocean 托管的 redis 实例

[英]ServiceStack.Redis Unable to connect to Digitalocean managed redis instance

Recently I started converting a job processor from Node.js to .net core and have chosen to use ServiceStack.Redis to manage the connection to Redis.最近我开始将作业处理器从 Node.js 转换为 .net core,并选择使用 ServiceStack.Redis 来管理与 Redis 的连接。

Annoyingly I can't get it to connect to the managed Redis without it throwing an exception.令人讨厌的是,如果不抛出异常,我无法让它连接到托管的 Redis。 Any clues as to what this error even means?关于这个错误甚至意味着什么的任何线索?

var redisManager = new BasicRedisClientManager(0,Environment.GetEnvironmentVariable("REDIS"));
var redis = redisManager.GetClient();
Unhandled exception. ServiceStack.Redis.RedisResponseException: unknown command `ROLE`, with args beginning with: 
   at ServiceStack.Redis.RedisNativeClient.ReadComplexResponse() in C:\BuildAgent\work\b2a0bfe2b1c9a118\src\ServiceStack.Redis\RedisNativeClient_Utils.cs:line 1075
   at ServiceStack.Redis.RedisNativeClient.SendReceive[T](Byte[][] cmdWithBinaryArgs, Func`1 fn, Action`1 completePipelineFn, Boolean sendWithoutRead) in C:\BuildAgent\work\b2a0bfe2b1c9a1
18\src\ServiceStack.Redis\RedisNativeClient_Utils.cs:line 616
   at ServiceStack.Redis.RedisNativeClient.SendExpectComplexResponse(Byte[][] cmdWithBinaryArgs) in C:\BuildAgent\work\b2a0bfe2b1c9a118\src\ServiceStack.Redis\RedisNativeClient_Utils.cs:l
ine 744
   at ServiceStack.Redis.RedisNativeClient.Role() in C:\BuildAgent\work\b2a0bfe2b1c9a118\src\ServiceStack.Redis\RedisNativeClient.cs:line 846
   at ServiceStack.Redis.RedisClient.GetServerRole() in C:\BuildAgent\work\b2a0bfe2b1c9a118\src\ServiceStack.Redis\RedisClient.cs:line 1065
   at ServiceStack.Redis.RedisResolver.CreateRedisClient(RedisEndpoint config, Boolean master) in C:\BuildAgent\work\b2a0bfe2b1c9a118\src\ServiceStack.Redis\RedisResolver.cs:line 84
   at ServiceStack.Redis.RedisResolver.CreateMasterClient(Int32 desiredIndex) in C:\BuildAgent\work\b2a0bfe2b1c9a118\src\ServiceStack.Redis\RedisResolver.cs:line 148
   at ServiceStack.Redis.BasicRedisClientManager.GetClient() in C:\BuildAgent\work\b2a0bfe2b1c9a118\src\ServiceStack.Redis\BasicRedisClientManager.cs:line 104

Anyone else gets stuck with this, in particular if you are using Managed REDIS from DigitalOcean.其他任何人都会遇到这种情况,特别是如果您使用来自 DigitalOcean 的 Managed REDIS。

Essentially the ROLE command (and possibly others) are not available, so in this library you have to set the following flag.本质上 ROLE 命令(可能还有其他命令)不可用,所以在这个库中你必须设置以下标志。

RedisConfig.VerifyMasterConnections = false;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM