From 58cb055a994bdcf2dd29d09487eb9f04b3d8e83f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 26 Jun 2020 21:44:57 +0300 Subject: [PATCH] Reduce reflection for the AbpRedisCache --- .../StackExchangeRedis/AbpRedisCache.cs | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpRedisCache.cs b/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpRedisCache.cs index a5236022f3..6b523a43dc 100644 --- a/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpRedisCache.cs +++ b/framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpRedisCache.cs @@ -16,8 +16,9 @@ namespace Volo.Abp.Caching.StackExchangeRedis private static readonly MethodInfo ConnectMethod; private static readonly MethodInfo ConnectAsyncMethod; - protected IDatabase RedisDatabase => RedisDatabaseField.GetValue(this) as IDatabase; - + protected IDatabase RedisDatabase => GetRedisDatabase(); + private IDatabase _redisDatabase; + static AbpRedisCache() { RedisDatabaseField = typeof(RedisCache) @@ -38,12 +39,32 @@ namespace Volo.Abp.Caching.StackExchangeRedis protected virtual void Connect() { + if (GetRedisDatabase() != null) + { + return; + } + ConnectMethod.Invoke(this, Array.Empty()); } protected virtual Task ConnectAsync(CancellationToken token = default) { + if (GetRedisDatabase() != null) + { + return Task.CompletedTask; + } + return (Task) ConnectAsyncMethod.Invoke(this, new object[] {token}); } + + private IDatabase GetRedisDatabase() + { + if (_redisDatabase == null) + { + _redisDatabase = RedisDatabaseField.GetValue(this) as IDatabase; + } + + return _redisDatabase; + } } } \ No newline at end of file