2

MVC4アプリケーションでAppharborのRedisを試しています。Redis用のServiceStackC#クライアントを使用しています。RedisClientfromを使用すると、すべてが機能していましたServiceStack.RedisICacheClientただし、キャッシュにはRedisのみを使用する予定なので、ServiceStackがラッパーとして提供するものを接続しようとしました。これが私のStructureMap構成です(https://github.com/ServiceStack/ServiceStack/wiki/Caching):

x.For<IRedisClientsManager>().Use(() => new PooledRedisClientManager(redisUrl));
x.For<ICacheClient>().Use(c => c.GetInstance<IRedisClientsManager>().GetCacheClient());

私の問題は、Appharborが提供するRedis-to-Go URLを使用すると、PooledRedisClientManagerエラー「」がスローされることです。input string was not in a correct formatこれは次のようになります。

redis://redistogo-appharbor:abunchofrandomcharacters@drum.redistogo.com:9081/

Redis-to-Go URLをすべてに置き換えると、すべてが機能しlocalhost:5051ます。私は何が欠けていますか?

4

3 に答える 3

1

接頭辞aredis://は、既知のredis規則ではなく、RedisToGoまたはAppHarbor規則である必要があります。

ServiceStackのC#RedisClientは、標準の「password @ host:port」規則をサポートしています。例:

container.Register(c => new PooledRedisClientManager(
    "redistogo-appharbor:abunchofrandomcharacters@drum.redistogo.com:9081"
));
于 2012-08-30T22:11:57.310 に答える
0

このようなものが私のために働いた:

container.Register(c => new PooledRedisClientManager(
    @"abunchofrandomcharacters@drum.redistogo.com:9081"
));
于 2013-08-28T04:42:47.097 に答える
0

いくつかの試行錯誤の後、これは機能します。

string redisUrl = ConfigurationManager.AppSettings["REDISTOGO_URL"].Replace("redis://",    "").Replace("redistogo:","").Replace("/", "");
ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container));
SetConfig(new HostConfig{HandlerFactoryPath = "api"});
container.Register<IRedisClientsManager>(c => new PooledRedisClientManager(redisUrl));
container.Register<IDbRepository>(r => new DbRepository(r.Resolve<IRedisClientsManager>()));
于 2014-07-11T21:09:54.790 に答える