3

ServiceStackのRedisクライアントの使用を開始したばかりのASP.NETMVCアプリケーションがあります。IoCコンテナとしてNinjectを使用しています。現在、私のバインディングは次のようになっています。

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はどちらもスレッドセーフであり、シングルトンとして使用するように設計されています。2つの違いは、BasicRedisClientManagerが返すたびに新しい接続が作成され、PooledRedisClientManagerが開いているRedis接続のプールを維持することです。

于 2012-09-30T06:00:59.167 に答える