3

我有一个 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());

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

4

1 回答 1

5

是的,BasicRedisClientManagerPooledRedisClientManager都是线程安全的,并且设计为用作单例。两者之间的区别在于 BasicRedisClientManager 每次返回都会创建一个新连接,而 PooledRedisClientManager 维护一个打开的 Redis 连接池。

于 2012-09-30T06:00:59.167 回答