| 
					
				 | 
			
			
				@@ -1,22 +1,32 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using System; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using FreeRedis; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using System; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using System.Text.RegularExpressions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using System.Threading.Tasks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using ZhonTai.Common.Extensions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace ZhonTai.Admin.Tools.Cache; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /// Redis缓存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class RedisCacheTool : ICacheTool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public partial class RedisCacheTool : ICacheTool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    [GeneratedRegex("\\{.*\\}")] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static partial Regex PatternRegex(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private readonly RedisClient _redisClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public RedisCacheTool(RedisClient redisClient) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        _redisClient = redisClient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public long Del(params string[] key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.Del(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return _redisClient.Del(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Task<long> DelAsync(params string[] key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.DelAsync(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return _redisClient.DelAsync(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public async Task<long> DelByPatternAsync(string pattern) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -24,12 +34,12 @@ public class RedisCacheTool : ICacheTool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (pattern.IsNull()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return default; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pattern = Regex.Replace(pattern, @"\{.*\}", "*"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pattern = PatternRegex().Replace(pattern, "*"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        var keys = (await RedisHelper.KeysAsync(pattern)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var keys = await _redisClient.KeysAsync(pattern); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (keys != null && keys.Length > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return await RedisHelper.DelAsync(keys); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return await _redisClient.DelAsync(keys); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return default; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -37,78 +47,66 @@ public class RedisCacheTool : ICacheTool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public bool Exists(string key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.Exists(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return _redisClient.Exists(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Task<bool> ExistsAsync(string key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.ExistsAsync(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return _redisClient.ExistsAsync(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public string Get(string key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.Get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return _redisClient.Get(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public T Get<T>(string key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.Get<T>(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return _redisClient.Get<T>(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Task<string> GetAsync(string key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.GetAsync(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return _redisClient.GetAsync(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Task<T> GetAsync<T>(string key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.GetAsync<T>(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public bool Set(string key, object value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.Set(key, value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return _redisClient.GetAsync<T>(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public bool Set(string key, object value, TimeSpan expire) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void Set(string key, object value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.Set(key, value, expire); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        _redisClient.Set(key, value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public Task<bool> SetAsync(string key, object value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void Set(string key, object value, TimeSpan expire) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.SetAsync(key, value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        _redisClient.Set(key, value, expire); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public Task<bool> SetAsync(string key, object value, TimeSpan expire) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Task SetAsync(string key, object value, TimeSpan? expire = null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return RedisHelper.SetAsync(key, value, expire); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return _redisClient.SetAsync(key, value, expire.HasValue ? expire.Value.TotalSeconds.ToInt() : 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public async Task<T> GetOrSetAsync<T>(string key, Func<Task<T>> func, TimeSpan? expire = null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (await RedisHelper.ExistsAsync(key)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (await _redisClient.ExistsAsync(key)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return await RedisHelper.GetAsync<T>(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return await _redisClient.GetAsync<T>(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             catch 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                await RedisHelper.DelAsync(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                await _redisClient.DelAsync(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var result = await func.Invoke(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (expire.HasValue) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            await RedisHelper.SetAsync(key, result, expire.Value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            await RedisHelper.SetAsync(key, result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await _redisClient.SetAsync(key, result, expire.HasValue ? expire.Value.TotalSeconds.ToInt() : 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 |