에 연결 풀 레디 스 복수의 (다른)를 등록하는 방법 (서로 다른 스토리지 정책을 필요로하기 때문에 우리는 데이터베이스 당 하나 개의 레디 스 인스턴스가). 각 레디 스 DB에 대한 IOC
나는 생성자에서 해당PooledRedisClientManager
인스턴스를 가지고 여러 가지 (다른) 저장소가 있습니다. 나는 그들이 모든
이 동일한 인터페이스 (
IRedisClientsManager
)를 구현하기 때문에 제대로을 등록하는 방법을 이해하지 않습니다.
container.Register<IRedisClientsManager>(c => new PooledRedisClientManager(databaseAConnectionString));
container.Register<IRedisClientsManager>(c => new PooledRedisClientManager(databaseBConnectionString));
위 등록은 연결 문자열에 의해서만 다르며이를 구분 (해결)하는 방법을 알지 못합니다. 내 서비스에서
//Pools for database A and B
var databaseAPool = new PooledRedisClientManager(databaseAConnectionString)
var databaseBPool = new PooledRedisClientManager(databaseBConnectionString)
//Repositories for database A
container.Register(c => new AClass1Repository(databaseAPool);
container.Register(c => new AClass2Repository(databaseAPool);
// etc
//Repositories for database B
container.Register(c => new BClass1Repository(databaseBPool);
container.Register(c => new BClass2Repository(databaseBPool);
// etc
을 나는 같은 것을 할 좋아 : :이 같은 등록해야
//...
var AClass1Repo = ServiceStackHost.Instance.Resolve<AClass1Repository>();
var BClass2Repo = ServiceStackHost.Instance.Resolve<BClass2Repository>();
var xyz = AClass1Repo.GetSomeData(....);
BClass2Repo.StoreSomeData(somePocoInstance);
//....
을 어떻게 각 데이터베이스에 대해 내 다른 레디 스 연결 풀 내 저장소를 철사해야합니까?
감사합니다. RedisCachePool = 새로운 PooledRedisClientManager (cacheDbConnString) {; 세트를 얻을 수} PooledRedisClientManager RedisCache; 레디 스에 대한 또 하나의 문제는 ICacheClient'가'기반 container.Register (C => 새로운 내용은 여기 (RedisCachePool)) 'ServiceStackHost'에 대해 : 힌트를 주셔서 감사 드리며,'Service'에서 파생 된 모든 클래스에서 잘 작동합니다. 내 인증 공급자 구현에서는 작동하지 않습니다. – ThommyB
당신이 당신의 캐시 클라이언트를위한 레디 스를 사용하려는 경우 당신은 당신이 캐시에 사용하려는 레디 스 풀 선택해야합니다, 예를 들어'container.Register (C => RedisManagerA.GetCacheClient()).'액세스 종속성을 선호하는 API가 당신이'IRequest.TryResolve()'을 사용할 수 있다면. –
mythz
오, 죄송 합니다만,'GetCacheClient() 'PooledRedisClientManager'의 메소드입니다! – ThommyB