ServiceStack的IRedisClientManager + Ninject - 使用InSingletonScope?

时间:2012-09-29 17:41:02

标签: redis ninject servicestack

我有一个ASP.NET MVC应用程序,我刚刚开始使用ServiceStack的Redis客户端。我使用Ninject作为我的IoC容器。目前我的绑定看起来像这样:

Bind<IRedisClientsManager>()
    .ToMethod(c => new BasicRedisClientManager("localhost:6379"))
    .InSingletonScope();

Bind<ICacheClient>().ToMethod(c => c.Kernel.Get<IRedisClientsManager>().GetCacheClient());
Bind<IRedisClient>().ToMethod(c => c.Kernel.Get<IRedisClientsManager>().GetClient());

我正在app启动时有效地创建一个BasicRedisClientManager的单例实例,用于在ICacheClient或IRedisClient的任何请求中实例化。我在这里做的是否正确用于典型用例?提前谢谢!

1 个答案:

答案 0 :(得分:5)

BasicRedisClientManager PooledRedisClientManager 都是线程安全的,旨在用作单例。 2之间的区别在于BasicRedisClientManager每次返回时创建一个新的Connection,而PooledRedisClientManager维护一个打开的Redis Connections池。