作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个 ASP.NET MVC 应用程序,我刚刚开始在其中使用 ServiceStack 的 Redis 客户端。我使用 Ninject 作为我的 IoC 容器。目前我的绑定(bind)看起来像这样:
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 的任何请求中进行实例化。我在这里所做的对于典型用例是否正确?提前致谢!
最佳答案
是的,BasicRedisClientManager 和 PooledRedisClientManager 都是线程安全的,并且设计为用作单例。两者之间的区别在于 BasicRedisClientManager 每次返回都会创建一个新的连接,而 PooledRedisClientManager 维护一个打开的 Redis 连接池。
关于redis - ServiceStack 的 IRedisClientManager + Ninject - 使用 InSingletonScope?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12654945/
我有一个 ASP.NET MVC 应用程序,我刚刚开始在其中使用 ServiceStack 的 Redis 客户端。我使用 Ninject 作为我的 IoC 容器。目前我的绑定(bind)看起来像这样
我是一名优秀的程序员,十分优秀!