ServiceStack のセッションとキャッシュ メカニズムについて読み始めたばかりなので、何かが足りない可能性があります。ServiceStack で複数の ICacheClient 実装を使用する方法はありますか?
https://github.com/ServiceStack/ServiceStack/wiki/Sessionsおよびhttps://github.com/ServiceStack/ServiceStack/wiki/Cachingによると、次のようにセッション プラグインを追加できます。
public override void Configure(Container container)
{
Plugins.Add(new SessionFeature());
}
そして、次のように特定の ICacheClient 実装を登録できます。
container.Register<ICacheClient>(new MemoryCacheClient());
私が考えているのは、パフォーマンスを最大化するために大量のセッション状態を維持するステートフル サービスが必要な場合があるかもしれないということですが、より一般的なキャッシュ要件については、Redis のようなものを使用することをお勧めします。
container.Register<IRedisClientsManager>(c =>
new PooledRedisClientManager("localhost:6379"));
container.Register<ICacheClient>(c =>
(ICacheClient)c.Resolve<IRedisClientsManager>().GetCacheClient());
しかし、これらを切り替える方法はありますか?プロバイダーを手動で (IoC をバイパスして) 作成し、インメモリまたは Redis キャッシング (他の ICacheClient インスタンスに IoC を使用) に使用する必要がありますか? または、両方の ICacheClient 実装のラッパーを作成し、特別なキー命名パターンのようなものを使用して、メモリ内キャッシュと Redis キャッシュの使用を内部的に切り替えますか?
また、ISession を介したデータへのアクセスをどのように処理しますか? 自動配線された ICacheClient プロパティを直接参照するときに、Redis を使用しながら、インメモリ ICacheClient で ISession を潜在的にバックアップできますか?