Browse Source

Merge branch 'dev' into Cms-kit-tag-issue-13417

pull/13718/head
malik masis 4 years ago
parent
commit
dc534e54d5
  1. 34
      framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpRedisCache.cs
  2. 4
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Scopes/AbpOpenIddictScopeCache.cs

34
framework/src/Volo.Abp.Caching.StackExchangeRedis/Volo/Abp/Caching/StackExchangeRedis/AbpRedisCache.cs

@ -15,18 +15,18 @@ namespace Volo.Abp.Caching.StackExchangeRedis;
[DisableConventionalRegistration] [DisableConventionalRegistration]
public class AbpRedisCache : RedisCache, ICacheSupportsMultipleItems public class AbpRedisCache : RedisCache, ICacheSupportsMultipleItems
{ {
protected static readonly string SetScript;
protected static readonly string AbsoluteExpirationKey; protected static readonly string AbsoluteExpirationKey;
protected static readonly string SlidingExpirationKey; protected static readonly string SlidingExpirationKey;
protected static readonly string DataKey; protected static readonly string DataKey;
protected static readonly long NotPresent; protected static readonly long NotPresent;
private static readonly FieldInfo RedisDatabaseField; private readonly static FieldInfo SetScriptField;
private static readonly MethodInfo ConnectMethod; private readonly static FieldInfo RedisDatabaseField;
private static readonly MethodInfo ConnectAsyncMethod; private readonly static MethodInfo ConnectMethod;
private static readonly MethodInfo MapMetadataMethod; private readonly static MethodInfo ConnectAsyncMethod;
private static readonly MethodInfo GetAbsoluteExpirationMethod; private readonly static MethodInfo MapMetadataMethod;
private static readonly MethodInfo GetExpirationInSecondsMethod; private readonly static MethodInfo GetAbsoluteExpirationMethod;
private readonly static MethodInfo GetExpirationInSecondsMethod;
protected IDatabase RedisDatabase => GetRedisDatabase(); protected IDatabase RedisDatabase => GetRedisDatabase();
private IDatabase _redisDatabase; private IDatabase _redisDatabase;
@ -36,9 +36,11 @@ public class AbpRedisCache : RedisCache, ICacheSupportsMultipleItems
static AbpRedisCache() static AbpRedisCache()
{ {
var type = typeof(RedisCache); var type = typeof(RedisCache);
RedisDatabaseField = type.GetField("_cache", BindingFlags.Instance | BindingFlags.NonPublic); RedisDatabaseField = type.GetField("_cache", BindingFlags.Instance | BindingFlags.NonPublic);
SetScriptField = type.GetField("_setScript", BindingFlags.Instance | BindingFlags.NonPublic);
ConnectMethod = type.GetMethod("Connect", BindingFlags.Instance | BindingFlags.NonPublic); ConnectMethod = type.GetMethod("Connect", BindingFlags.Instance | BindingFlags.NonPublic);
ConnectAsyncMethod = type.GetMethod("ConnectAsync", BindingFlags.Instance | BindingFlags.NonPublic); ConnectAsyncMethod = type.GetMethod("ConnectAsync", BindingFlags.Instance | BindingFlags.NonPublic);
@ -51,9 +53,6 @@ public class AbpRedisCache : RedisCache, ICacheSupportsMultipleItems
GetExpirationInSecondsMethod = GetExpirationInSecondsMethod =
type.GetMethod("GetExpirationInSeconds", BindingFlags.Static | BindingFlags.NonPublic); type.GetMethod("GetExpirationInSeconds", BindingFlags.Static | BindingFlags.NonPublic);
SetScript = type.GetField("SetScript", BindingFlags.Static | BindingFlags.NonPublic)?.GetValue(null)
.ToString();
AbsoluteExpirationKey = type.GetField("AbsoluteExpirationKey", BindingFlags.Static | BindingFlags.NonPublic) AbsoluteExpirationKey = type.GetField("AbsoluteExpirationKey", BindingFlags.Static | BindingFlags.NonPublic)
?.GetValue(null).ToString(); ?.GetValue(null).ToString();
@ -83,14 +82,14 @@ public class AbpRedisCache : RedisCache, ICacheSupportsMultipleItems
ConnectMethod.Invoke(this, Array.Empty<object>()); ConnectMethod.Invoke(this, Array.Empty<object>());
} }
protected virtual Task ConnectAsync(CancellationToken token = default) protected virtual async Task ConnectAsync(CancellationToken token = default)
{ {
if (GetRedisDatabase() != null) if (GetRedisDatabase() != null)
{ {
return Task.CompletedTask; return;
} }
return (Task)ConnectAsyncMethod.Invoke(this, new object[] { token }); await (Task)ConnectAsyncMethod.Invoke(this, new object[] { token });
} }
public byte[][] GetMany( public byte[][] GetMany(
@ -283,7 +282,7 @@ public class AbpRedisCache : RedisCache, ICacheSupportsMultipleItems
for (var i = 0; i < itemArray.Length; i++) for (var i = 0; i < itemArray.Length; i++)
{ {
tasks[i] = RedisDatabase.ScriptEvaluateAsync(SetScript, new RedisKey[] { Instance + itemArray[i].Key }, tasks[i] = RedisDatabase.ScriptEvaluateAsync(GetSetScript(), new RedisKey[] { Instance + itemArray[i].Key },
new RedisValue[] new RedisValue[]
{ {
absoluteExpiration?.Ticks ?? NotPresent, absoluteExpiration?.Ticks ?? NotPresent,
@ -333,4 +332,9 @@ public class AbpRedisCache : RedisCache, ICacheSupportsMultipleItems
return _redisDatabase; return _redisDatabase;
} }
private string GetSetScript()
{
return SetScriptField?.GetValue(this).ToString();
}
} }

4
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Scopes/AbpOpenIddictScopeCache.cs

@ -9,11 +9,11 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.OpenIddict.Scopes; namespace Volo.Abp.OpenIddict.Scopes;
public class AbpOpenIddictScopeCacheAbpOpenIddictAuthorizationCache : AbpOpenIddictCacheBase<OpenIddictScope, OpenIddictScopeModel, IOpenIddictScopeStore<OpenIddictScopeModel>>, public class AbpOpenIddictScopeCache : AbpOpenIddictCacheBase<OpenIddictScope, OpenIddictScopeModel, IOpenIddictScopeStore<OpenIddictScopeModel>>,
IOpenIddictScopeCache<OpenIddictScopeModel>, IOpenIddictScopeCache<OpenIddictScopeModel>,
ITransientDependency ITransientDependency
{ {
public AbpOpenIddictScopeCacheAbpOpenIddictAuthorizationCache( public AbpOpenIddictScopeCache(
IDistributedCache<OpenIddictScopeModel> cache, IDistributedCache<OpenIddictScopeModel> cache,
IDistributedCache<OpenIddictScopeModel[]> arrayCache, IDistributedCache<OpenIddictScopeModel[]> arrayCache,
IOpenIddictScopeStore<OpenIddictScopeModel> store) IOpenIddictScopeStore<OpenIddictScopeModel> store)

Loading…
Cancel
Save