using CommonEntity; using CSRedis; using Newtonsoft.Json; using NLog; using System.Net; using System.Text.Json; namespace BLWLogProduce.Models { public class MyPublishRedis { public static CSRedisClient? redis4; public static CSRedisClient? redis6; public static Logger logger = LogManager.GetCurrentClassLogger(); private const string ip = "127.0.0.1"; private const string port = "6379"; static MyPublishRedis() { var redisHostStr = string.Format("{0}:{1}", ip, port); if (!string.IsNullOrEmpty(redisHostStr)) { redis4 = new CSRedisClient(redisHostStr + ",password=,defaultDatabase=4"); redis6 = new CSRedisClient(redisHostStr + ",password=,defaultDatabase=6"); string channel = "__keyevent@6__:expired"; var QQQ = new ValueTuple>(channel, (msg) => { string data = msg.Body; try { var data_take =redis4.Get(data); if (!string.IsNullOrEmpty(data_take)) { var o = JsonConvert.DeserializeObject(data_take); o.CurrentStatus = "off"; string str = Newtonsoft.Json.JsonConvert.SerializeObject(o); redis6.Publish("redis-on_off_line", str); } } catch (Exception ex) { logger.Error("定阅出错:"+data); } }); redis6.Subscribe(QQQ); } } } }