Я использую ICacheClient
из библиотеки servicestack с Redis в качестве бэкэнд.Использование ServiceStack ICacheClient с Redis и Ninject
Я также использую Ninject для DI.
Я пытаюсь выяснить, в какой области можно связать менеджера PooledRedisClient
.
Я попытался следующие:
Bind<ICacheClient>().ToMethod(ctx => new PooledRedisClientManager(redisURI)).InSingletonScope();
Это, кажется, работает нормально, но я постоянно вижу RedisResponseExceptions
.
Я думаю, что это связано с тем, что у меня заканчиваются соединения.
Возможно, что SingletonScope неверен?
Может ли кто-нибудь указать мне правильное направление? Я использую версию servicestack: 3.9.0
EDIT
Является ли это правильное использование?
Bind<ICacheClient>().ToMethod(ctx => new PooledRedisClientManager(redisURI).GetCacheClient()).InSingletonScope();
возможно @mythz может перезвонить здесь? Я видел похожие вопросы, но не смог найти окончательного ответа. – stephen776
Я только что получил уведомление по электронной почте от моего провайдера redis, в котором говорилось, что у меня заканчивается клиентское соединение, поэтому я думаю, что это моя проблема. Haha – stephen776
. Вы не должны заканчивать соединения, когда зарегистрирован как singleton [поскольку весь доступ redis завернут в блок использования] (https://github.com/ServiceStack/ServiceStack.Redis/blob/master/tests/ServiceStack.Redis.Tests/ServiceStack.Redis/PooledRedisClientManager.ICacheClient .cs). Вероятно, у вас есть другая проблема, не связанная с этим. – mythz