redis - ServiceStack Redis 客户端发生意外错误

标签 redis servicestack servicestack.redis

在使用 Servicestack 汇集的 redisClientsManager 操作哈希时出现错误。

这是我注册国际奥委会的方式

private static IRedisClientsManager redisClientsManager;
redisClientsManager =  new PooledRedisClientManager("host:6379");
container.Register<IRedisClientsManager>(c => redisClientsManager);
container.Register(c => c.Resolve<IRedisClientsManager>().GetClient());
container.Register<IRepository>(c => new Repository(c.Resolve<IRedisClientsManager>()));

下面是我如何在 Repository 中使用它,

IRedisClientsManager manager;
public repository(IRedisClientsManager mgr)
{
 this.manager=mgr;
}

//与redis对话的方法

using(var red = manager.getClient())
{
  //do stuff with Other datatype except Hashes WORKS
}
//Error raised here
using(var redHash = manager.getClient())
{
  //do stuff with Hashes DOESNT WORKS
}

错误: 意外错误:* 0....,Redis 响应错误 关于如何使用 PooledRedisClientManager Threadsafe 的任何建议。!

添加堆栈跟踪:

消息:意外回复:*0,sPort:6379,LastCommand:

at ServiceStack.Redis.RedisNativeClient.CreateResponseError(String error) at ServiceStack.Redis.RedisNativeClient.ParseSingleLine(String r) at ServiceStack.Redis.RedisNativeClient.SendExpectData(Byte[][] cmdWithBinaryArgs) at ServiceStack.Redis.RedisNativeClient.EvalShaStr(String sha1, Int32 numberKeysInArgs, Byte[][] keys) at ServiceStack.Redis.RedisClient.ExecLuaShaAsString(String sha1, String[] keys, String[] args) at Services.Data.Repository.GetMo(geoJ , DateTime , String ) in \Data\Repository.cs:line 169 at Services.Api.getMService.Any(getM request) in \Api\getMService.cs:line 15 at lambda_method(Closure , Object , Object ) at ServiceStack.ServiceHost.ServiceRunner`1.Execute(IRequestContext requestContext, Object instance, TRequest request)

最佳答案

当您在调用 LUA 脚本时收到 Message:Unexpected reply 错误时,您需要确保脚本返回的内容与您正在调用的 RedisClient API 匹配,在本例中为 RedisClient.ExecLuaShaAsString() 需要一个 string

如果您不确定您的 LUA 脚本返回什么类型,您可以调用更可重用的 ExecLuaSha,它返回一个复杂的 RedisText 类型,可以支持许多不同的 LUA响应类型。

关于redis - ServiceStack Redis 客户端发生意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43451205/

相关文章:

java - 如果集群中的第一个节点关闭,Redis 客户端 (Redission) 将停止工作

c# - ServiceStack 中是否有任何等效于 ValidateAntiForgeryToken 的东西?

c# - 使用 JSON 时如何让 ServiceStack 将 Guids 格式化为破折号?

redis - ServiceStack.Redis v3 和多主机——推荐架构

performance - 为redis中的所有键设置过期是一种好习惯吗

redis - 如何配置redis sentinel日志文件位置

c# - 未经许可注册servicestack?

ssl - 使用 ServiceStack.Redis 连接到 TSL Redis 云

node.js - 喜欢计数器不会在其他客户端上更新(Laravel + Vue + Redis + Soket.io + Node)

razor - 为什么添加 razorformat 会破坏 servicestack 最新 3.9.45.0 中的 Web 服务