using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; using StackExchange.Redis; namespace IoTIntegrationPlatform.Common { /// /// redis 帮助类 /// public class RedisHelper { private ConnectionMultiplexer redis; private static string redisConnectStr = string.Empty; /// /// /// /// public static void SetRedisConnection(string conn) { redisConnectStr = conn; } private static RedisHelper _Instance; /// /// redis单例 /// public static RedisHelper Instance { get { lock (redisConnectStr) { if (_Instance == null) { if (string.IsNullOrWhiteSpace(redisConnectStr)) { Logging.Warn("redisConnectStr 未配置"); } _Instance = new RedisHelper { redis = ConnectionMultiplexer.Connect(redisConnectStr) }; } return _Instance; } } } public bool Remove(string key) { IDatabase db = redis.GetDatabase(); return db.KeyDelete(key); } #region string /// /// 保存字符串 /// /// /// /// /// public bool StringSet(string key, string value, int TimeSpanSeconds = 0) { IDatabase db = redis.GetDatabase(); if (TimeSpanSeconds > 0) { return db.StringSet(key, value, TimeSpan.FromSeconds(TimeSpanSeconds)); } return db.StringSet(key, value); } public bool StringSet(string key, string value, TimeSpan? timeSpan) { IDatabase db = redis.GetDatabase(); if (timeSpan != null) { return db.StringSet(key, value, timeSpan); } return db.StringSet(key, value); } /// /// 保存实体字符串 /// /// /// /// /// public bool StringSet(string key, T value, int TimeSpanSeconds = 0) { IDatabase db = redis.GetDatabase(); if (TimeSpanSeconds > 0) { return db.StringSet(key, JsonConvert.SerializeObject(value), TimeSpan.FromSeconds(TimeSpanSeconds)); } return db.StringSet(key, JsonConvert.SerializeObject(value)); } /// /// 获取字符串 /// /// /// public string StringGet(string key) { IDatabase db = redis.GetDatabase(); return db.StringGet(key); } /// /// 获取实体 /// /// /// /// public T StringGet(string key, int TimeSpanSeconds = 0) { string result = StringGet(key); if (!string.IsNullOrWhiteSpace(result)) { if (TimeSpanSeconds > 0) { StringSet(key, result, TimeSpanSeconds); } return JsonConvert.DeserializeObject(result); } return default; } #endregion string #region List public long ListRightPush(string key, string value) { IDatabase db = redis.GetDatabase(); return db.ListRightPush(key, value); } public string ListLeftPop(string key) { IDatabase db = redis.GetDatabase(); return db.ListLeftPop(key); } public static List GetList(string key) { List taskList = new List(); //获取redis保存数据 var redisList = RedisHelper.Instance.StringGet(key); if (!string.IsNullOrEmpty(redisList)) { taskList = JsonTools.JsonToT>(redisList); } return taskList; } #endregion List } }