namespace Yw.LCache.Redis { /// /// /// public class RunRealLastRecordCacheHelper : IRunRealLastRecordCacheHelper { //Redis客户端辅助类对象 private readonly RedisClientHelper _redisClient = 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 = "-"; /// /// 设置最后一条记录 /// public bool SetLastRecord(Model.RunRealRecord record) { if (record == null) { return false; } var hashKey = CreateHashKey(); var hashField = CreateHashField(record.ObjectType, record.ObjectID); _redisClient.HashSetJosn(hashKey, hashField, record); return true; } /// /// 设置最后一条记录 /// public bool SetLastRecord(List list) { if (list == null || !list.Any()) { return false; } foreach (var item in list) { var bol = SetLastRecord(item); if (!bol) { return false; } } return true; } /// /// 获取最后一条记录 /// public List GetLastRecord() { var hashKey = CreateHashKey(); return _redisClient.HashGetJsonAll(hashKey); } /// /// 获取最后一条记录 /// public List GetLastRecord(string ObjectType) { var hashKey = CreateHashKey(); var hashField = CreateHashField(ObjectType); return _redisClient.HashGetJsonStartsWith(hashKey, hashField); } /// /// 获取最后一条记录 /// public List GetLastRecord(long ObjectID) { var hashKey = CreateHashKey(); var hashField = CreateHashField(ObjectID); return _redisClient.HashGetJsonEndsWith(hashKey, hashField); } /// /// 获取最后一条记录 /// public Model.RunRealRecord GetLastRecord(string ObjectType, long ObjectID) { var hashKey = CreateHashKey(); var hashField = CreateHashField(ObjectType, ObjectID); return _redisClient.HashGetJson(hashKey, hashField); } /// /// 获取最后一条记录 /// public List GetLastRecord(string ObjectType, IEnumerable ObjectIds) { if (ObjectIds == null || !ObjectIds.Any()) { return default; } return ObjectIds.Select(x => GetLastRecord(ObjectType, x)).Where(x => x != null).ToList(); } /// /// 获取最后一条记录 /// public List 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(); } } }