namespace Yw.LCache.Medis
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public class RunRealLastRecordCacheHelper : IRunRealLastRecordCacheHelper
|
{
|
|
//Redis客户端辅助类对象
|
private readonly MedisCacheHelper _medisHelper = new();
|
|
//生成 HashKey
|
private static string CreateHashKey()
|
{
|
return CacheKeyHelper.CreateKey(_flag);
|
}
|
private const string _flag = "run-real-last-record";
|
|
//生成 HashField
|
private static string CreateHashField(string ObjectType, long ObjectID)
|
{
|
return $"{ObjectType}{_split}{ObjectID}";
|
}
|
|
//生成 HashField
|
private static string CreateHashField(string ObjectType)
|
{
|
return $"{ObjectType}{_split}";
|
}
|
|
//生成 HashField
|
private static string CreateHashField(long ObjectID)
|
{
|
return $"{_split}{ObjectID}";
|
}
|
private const string _split = "-";
|
|
|
|
/// <summary>
|
/// 设置最后一条记录
|
/// </summary>
|
public bool SetLastRecord(Model.RunRealRecord record)
|
{
|
if (record == null)
|
{
|
return false;
|
}
|
var hashKey = CreateHashKey();
|
var hashField = CreateHashField(record.ObjectType, record.ObjectID);
|
_medisHelper.HashSet(hashKey, hashField, record);
|
return true;
|
}
|
|
/// <summary>
|
/// 设置最后一条记录
|
/// </summary>
|
public bool SetLastRecord(List<Model.RunRealRecord> list)
|
{
|
if (list == null || !list.Any())
|
{
|
return false;
|
}
|
foreach (var item in list)
|
{
|
var bol = SetLastRecord(item);
|
if (!bol)
|
{
|
return false;
|
}
|
}
|
return true;
|
}
|
|
/// <summary>
|
/// 获取最后一条记录
|
/// </summary>
|
public List<Model.RunRealRecord> GetLastRecord()
|
{
|
var hashKey = CreateHashKey();
|
return _medisHelper.HashValues<Model.RunRealRecord>(hashKey);
|
}
|
|
/// <summary>
|
/// 获取最后一条记录
|
/// </summary>
|
public List<Model.RunRealRecord> GetLastRecord(string ObjectType)
|
{
|
var hashKey = CreateHashKey();
|
var hashField = CreateHashField(ObjectType);
|
return _medisHelper.HashGetStartsWith<Model.RunRealRecord>(hashKey, hashField);
|
}
|
|
/// <summary>
|
/// 获取最后一条记录
|
/// </summary>
|
public List<Model.RunRealRecord> GetLastRecord(long ObjectID)
|
{
|
var hashKey = CreateHashKey();
|
var hashField = CreateHashField(ObjectID);
|
return _medisHelper.HashGetEndsWith<Model.RunRealRecord>(hashKey, hashField);
|
}
|
|
/// <summary>
|
/// 获取最后一条记录
|
/// </summary>
|
public Model.RunRealRecord GetLastRecord(string ObjectType, long ObjectID)
|
{
|
var hashKey = CreateHashKey();
|
var hashField = CreateHashField(ObjectType, ObjectID);
|
return _medisHelper.HashGet<Model.RunRealRecord>(hashKey, hashField);
|
}
|
|
/// <summary>
|
/// 获取最后一条记录
|
/// </summary>
|
public List<Model.RunRealRecord> GetLastRecord(string ObjectType, IEnumerable<long> ObjectIds)
|
{
|
if (ObjectIds == null || !ObjectIds.Any())
|
{
|
return default;
|
}
|
return ObjectIds.Select(x => GetLastRecord(ObjectType, x)).Where(x => x != null).ToList();
|
}
|
|
/// <summary>
|
/// 获取最后一条记录
|
/// </summary>
|
public List<Model.RunRealRecord> GetLastRecord(List<(string, long)> list)
|
{
|
if (list == null || !list.Any())
|
return default;
|
return list.Select(x => GetLastRecord(x.Item1, x.Item2)).Where(x => x != null).ToList();
|
}
|
|
|
|
|
}
|
}
|