ABP 通過StackExchange.Redis類庫來操作Redis數據庫。
AbpRedisCacheModule:完成ABP.RedisCache模塊的初始化(完成常規的依賴注入)
AbpRedisCacheConfig:定義了connectionStringKey和databaseIdAppSetting的值。這兩個值對象redis 在web.config中的key值。 ABP.RedisCache模塊通過讀取web.config來獲取redis的配置。
IAbpRedisConnectionProvider/AbpRedisConnectionProvider:從web.config中讀取Redis的connectionstring信息,並通過connectionstring生成ConnectionMultiplexer對象。AbpRedisConnectionProvider是一個單例實現,並且將ConnectionMultiplexer對象保存在其本地的Dictionary中,避免反復創建。
AbpRedisCache : 繼承自Abp核心庫中的 CacheBase,通過IAbpRedisConnectionProvider對象返回的ConnectionMultiplexer對象操作redis數據庫。
AbpRedisCacheManager:重寫了CacheManagerBase的CreateCacheImplementation方法,該方法用於創建真實的Icache對象。 具體到AbpRedisCacheManager就是創建AbpRedisCache。
如何啟用RedisCache呢?
默認情況下ABP是將AbpMemoryCacheManager注入到容器中的(是在ABPKernelModule的initalize方法中完成的)。所以我們要讓AbpRedisCacheManager先於AbpMemoryCacheManager注入到容器中,這樣castle 在resolve系統中的ICacheManager的時候就會優先取得AbpRedisCacheManager。方法只有一個,就是在你的web項目的**Module的PreInitialize中完成AbpRedisCacheManager的register(因為ABP是在完成所有moudle類的PreInitialize方法后,才執行各個Module的initalize方法的)。