ServiceStack Redis 客户端发生意外错误
Unexpected Error Occurred ServiceStack Redis Client
使用 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>()));
下面是我如何在存储库中使用它,
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 脚本的类型 returns,您可以调用更可重用的 ExecLuaSha
,其中 returns 是一个复杂的 RedisText
类型可以支持多种不同的 LUA 响应类型。
使用 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>()));
下面是我如何在存储库中使用它,
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 脚本的类型 returns,您可以调用更可重用的 ExecLuaSha
,其中 returns 是一个复杂的 RedisText
类型可以支持多种不同的 LUA 响应类型。