缓存搭建
This commit is contained in:
78
Yi.Framework.Net6/Yi.Framework.Core/Cache/CacheInvoker.cs
Normal file
78
Yi.Framework.Net6/Yi.Framework.Core/Cache/CacheInvoker.cs
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.IO;
|
||||||
|
using Yi.Framework.Common.IOCOptions;
|
||||||
|
using CSRedis;
|
||||||
|
|
||||||
|
namespace Yi.Framework.Core
|
||||||
|
{
|
||||||
|
public abstract class CacheInvoker
|
||||||
|
{
|
||||||
|
|
||||||
|
private readonly RedisConnOptions _RedisOptions;
|
||||||
|
|
||||||
|
protected CacheInvoker Client { get; set; }
|
||||||
|
|
||||||
|
public CacheInvoker Db { get { return Client; } set { } }
|
||||||
|
public CacheInvoker(IOptionsMonitor<RedisConnOptions> redisConnOptions)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
public virtual bool Exit(string key)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual long Remove(string key)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual long HRemove(string key, params string[] par)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
public virtual T Get<T>(string key)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual bool Set<T>(string key, T data, TimeSpan time)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual bool Set<T>(string key, T data)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
public virtual T QueuePop<T>(string key)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
public virtual long QueuePush<T>(string key, T data)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
public virtual long QueueLen(string key)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual bool HSet<T>(string key, string fieId, T data)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
public virtual bool HSet<T>(string key, string fieId, T data, TimeSpan time)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Yi.Framework.Common.IOCOptions;
|
||||||
|
|
||||||
|
namespace Yi.Framework.Core.Cache
|
||||||
|
{
|
||||||
|
public class MemoryCacheClient: CacheInvoker
|
||||||
|
{
|
||||||
|
private IMemoryCache _client;
|
||||||
|
public MemoryCacheClient(IOptionsMonitor<RedisConnOptions> redisConnOptions):base(redisConnOptions)
|
||||||
|
{
|
||||||
|
_client = new MemoryCache(new MemoryCacheOptions() { });
|
||||||
|
}
|
||||||
|
public override T Get<T>(string key)
|
||||||
|
{
|
||||||
|
return _client.Get<T>(key);
|
||||||
|
}
|
||||||
|
public override bool Set<T>(string key, T item)
|
||||||
|
{
|
||||||
|
return _client.Set(key, item) is not null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Set<T>(string key, T item, TimeSpan time)
|
||||||
|
{
|
||||||
|
return _client.Set(key, item, time) is not null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
42
Yi.Framework.Net6/Yi.Framework.Core/Cache/RedisClient.cs
Normal file
42
Yi.Framework.Net6/Yi.Framework.Core/Cache/RedisClient.cs
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.IO;
|
||||||
|
using Yi.Framework.Common.IOCOptions;
|
||||||
|
using CSRedis;
|
||||||
|
|
||||||
|
namespace Yi.Framework.Core
|
||||||
|
{
|
||||||
|
public class RedisClient: CacheInvoker
|
||||||
|
{
|
||||||
|
private readonly RedisConnOptions _RedisOptions;
|
||||||
|
|
||||||
|
private CSRedisClient _client;
|
||||||
|
|
||||||
|
public RedisClient(IOptionsMonitor<RedisConnOptions> redisConnOptions):base(redisConnOptions)
|
||||||
|
{
|
||||||
|
this._RedisOptions = redisConnOptions.CurrentValue;
|
||||||
|
_client = new CSRedisClient($"{_RedisOptions.Host}:{_RedisOptions.Prot},password={_RedisOptions.Password},defaultDatabase ={ _RedisOptions.DB }");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override T Get<T>(string key)
|
||||||
|
{
|
||||||
|
return _client.Get<T>(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Set<T>(string key, T data, TimeSpan time)
|
||||||
|
{
|
||||||
|
return _client.Set(key, data, time);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Set<T>(string key, T data)
|
||||||
|
{
|
||||||
|
return _client.Set(key, data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
using Microsoft.Extensions.Options;
|
|
||||||
using System;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.IO;
|
|
||||||
using Yi.Framework.Common.IOCOptions;
|
|
||||||
using CSRedis;
|
|
||||||
|
|
||||||
namespace Yi.Framework.Core
|
|
||||||
{
|
|
||||||
public class CacheInvoker
|
|
||||||
{
|
|
||||||
|
|
||||||
public delegate T MyAction<T>(CSRedisClient client);
|
|
||||||
|
|
||||||
private readonly RedisConnOptions _RedisOptions;
|
|
||||||
|
|
||||||
private CSRedisClient Client { get; set; }
|
|
||||||
|
|
||||||
public CSRedisClient _Db { get { return Client; } set { } }
|
|
||||||
public CacheInvoker(IOptionsMonitor<RedisConnOptions> redisConnOptions)
|
|
||||||
{
|
|
||||||
this._RedisOptions = redisConnOptions.CurrentValue;
|
|
||||||
Client = new CSRedisClient($"{_RedisOptions.Host}:{_RedisOptions.Prot},password={_RedisOptions.Password},defaultDatabase ={ _RedisOptions.DB }");
|
|
||||||
}
|
|
||||||
|
|
||||||
private T TryCatch<T>(MyAction<T> action)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
T result = default(T);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
result = action(Client);
|
|
||||||
}
|
|
||||||
catch (Exception exinfo)
|
|
||||||
{
|
|
||||||
Console.WriteLine(exinfo);
|
|
||||||
}
|
|
||||||
//finally
|
|
||||||
//{
|
|
||||||
// Client.Dispose();
|
|
||||||
//}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public bool Exit(string key)
|
|
||||||
{
|
|
||||||
return this.TryCatch((u) => u.Exists(key));
|
|
||||||
}
|
|
||||||
|
|
||||||
public long Remove(string key)
|
|
||||||
{
|
|
||||||
return this.TryCatch((u) => u.Del(key));
|
|
||||||
}
|
|
||||||
|
|
||||||
public long HRemove(string key, params string[] par)
|
|
||||||
{
|
|
||||||
return this.TryCatch((u) => u.HDel(key, par));
|
|
||||||
}
|
|
||||||
|
|
||||||
public T Get<T>(string key)
|
|
||||||
{
|
|
||||||
return this.TryCatch<T>((u) => u.Get<T>(key));
|
|
||||||
}
|
|
||||||
public bool Set<T>(string key, T data, TimeSpan time)
|
|
||||||
{
|
|
||||||
return this.TryCatch<bool>((u) => u.Set(key, data, time));
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool Set<T>(string key, T data)
|
|
||||||
{
|
|
||||||
return this.TryCatch<bool>((u) => u.Set(key, data));
|
|
||||||
}
|
|
||||||
public T QueuePop<T>(string key)
|
|
||||||
{
|
|
||||||
return this.TryCatch<T>((u) => u.RPop<T>(key));
|
|
||||||
}
|
|
||||||
public long QueuePush<T>(string key, T data)
|
|
||||||
{
|
|
||||||
return this.TryCatch<long>((u) => u.LPush<T>(key, data));
|
|
||||||
}
|
|
||||||
public long QueueLen(string key)
|
|
||||||
{
|
|
||||||
return TryCatch((u) => u.LLen(key));
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool HSet<T>(string key, string fieId, T data)
|
|
||||||
{
|
|
||||||
return this.TryCatch<bool>((u) => u.HSet(key, fieId, data));
|
|
||||||
}
|
|
||||||
public bool HSet<T>(string key, string fieId, T data, TimeSpan time)
|
|
||||||
{
|
|
||||||
return this.TryCatch<bool>((u) =>
|
|
||||||
{
|
|
||||||
var res = u.HSet(key, fieId, data);
|
|
||||||
u.Expire(key, time);
|
|
||||||
return res;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public CSRedisClient Db()
|
|
||||||
{
|
|
||||||
return new CSRedisClient($"{_RedisOptions.Host}:{_RedisOptions.Prot},password={_RedisOptions.Password},defaultDatabase ={ _RedisOptions.DB }");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user