【发布时间】:2020-05-18 01:56:39
【问题描述】:
最近我开始将作业处理器从 Node.js 转换为 .net core,并选择使用 ServiceStack.Redis 来管理与 Redis 的连接。
令人讨厌的是,如果它不抛出异常,我就无法让它连接到托管 Redis。关于这个错误甚至意味着什么的任何线索?
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
【问题讨论】:
-
我认为您可以检查以下任一情况: 1. 通过
redis-cli检查您是否可以在您的Redis 节点上执行ROLE。ROLE可能在您的 Redis 服务器上被禁用或不可用。 2.由于您使用托管Redis服务,您可能想使用PooledRedisClientManager? -
@Sharif 你是对的,ROLE 在托管实例上不可用。我设法通过设置
RedisConfig.VerifyMasterConnections = false;来禁用它 -
很高兴我的评论有帮助
标签: c# .net-core redis digital-ocean servicestack.redis