2025-03-27 15:05:14 +08:00

114 lines
4.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections.Generic;
using System.Linq;
namespace GSYWApi.Helper
{
/// <summary>
/// redis数据库帮助类
/// </summary>
public class DataHelper
{
#region -> Redis缓存中判断是否已存在数据
/// <summary>
/// 从Redis缓存中判断是否已存在数据
/// </summary>
/// <typeparam name="T">泛型对象</typeparam>
/// <param name="tableName">表名称</param>
/// <param name="KeyValue">键值</param>
/// <param name="redisHelper">redis数据库连接</param>
/// <returns></returns>
public static bool ContainData<T>(string tableName, string KeyValue, RedisHelper redisHelper)
{
//从Redis的db0数据库中获取信息
T InfoModel = redisHelper.HashGet<T>(tableName, KeyValue);
if (InfoModel != null)
{
return true;
}
return false;
}
#endregion
#region -> Redis缓存中
/// <summary>
/// 将数据记录Redis缓存中
/// </summary>
/// <typeparam name="T">泛型对象</typeparam>
/// <param name="ObjectModel">保存到redis数据中的ObjectModel</param>
/// <param name="tableName">数据表名称</param>
/// <param name="KeyName">数据键值名称</param>
/// <param name="KeyValue">数据键值,若为空则取键值名称对应的值</param>
/// <param name="redisHelper">redis数据库连接</param>
/// <param name="DeleteFlag">若存在相同的键值,是否要先删除再插入</param>
/// <returns></returns>
public static bool RecordToRedis<T>(T ObjectModel, string tableName, string KeyName,
RedisHelper redisHelper, bool DeleteFlag = false, string KeyValue = "")
{
//获取item对象类型
var pros = typeof(T).GetProperties();
if (string.IsNullOrWhiteSpace(KeyValue))
{
foreach (var item in pros)
{
if (item.Name == KeyName)
{
//获取字段对应的值作为hash对象的唯一键值
KeyValue = item.GetValue(ObjectModel, null).ToString();
break;
}
}
}
//若要先删除再插入,则找到相同的键值数据进行删除
if (DeleteFlag && redisHelper.HashExists(tableName, KeyValue))
{
redisHelper.HashDelete(tableName, KeyValue);
}
//写入Redis的数据库
return redisHelper.HashSet(tableName, KeyValue, ObjectModel);
}
/// <summary>
/// 将数据记录Redis缓存中
/// </summary>
/// <typeparam name="T">泛型对象</typeparam>
/// <param name="listData">保存到redis数据中的list数据集</param>
/// <param name="tableName">数据表名称</param>
/// <param name="KeyName">数据键值</param>
/// <param name="redisHelper">redis数据库连接</param>
/// <param name="DeleteFlag">若存在相同的键值,是否要先删除再插入</param>
/// <returns></returns>
public static bool RecordToRedis<T>(List<T> listData, string tableName, string KeyName,
RedisHelper redisHelper, bool DeleteFlag = false)
{
bool flag = false;
foreach (T model in listData)
{
//写入Redis的数据库
flag = RecordToRedis(model, tableName, KeyName, redisHelper, DeleteFlag);
}
return flag;
}
#endregion
#region -> List
/// <summary>
/// 获取缓存数据集合List
/// </summary>
/// <typeparam name="T">泛型对象</typeparam>
/// <param name="tableName">redis表名</param>
/// <param name="redisHelper">redis数据库链接</param>
/// <returns></returns>
public static List<T> GetListData<T>(string tableName, RedisHelper redisHelper)
{
//从缓存中获取营收趋势数据
List<T> ListData = redisHelper.HashGetList<T>(tableName).ToList();
return ListData;
}
#endregion
}
}