using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TelpoPush.WanJiaAn.Worker.Models.Config { /// /// Redis配置模板类 /// public class RedisConfig { public string Server { get; set; } /// /// Redis server password /// public string Password { get; set; } /// /// Redis server database, default 0 /// public int? DefaultDatabase { get; set; } /// /// The asynchronous method automatically uses pipeline, and the 10W concurrent time is 450ms(welcome to feedback) /// public bool? AsyncPipeline { get; set; } /// /// Connection pool size, default 50 /// public int? Poolsize { get; set; } /// /// Idle time of elements in the connection pool(MS), suitable for connecting to remote redis server, default 20000 /// public int? IdleTimeout { get; set; } /// /// Connection timeout(MS), default 5000 /// public int? ConnectTimeout { get; set; } /// /// Send / receive timeout(MS), default 10000 /// public int? SyncTimeout { get; set; } /// /// Preheat connections, receive values such as preheat = 5 preheat 5 connections, default 5 /// public int? Preheat { get; set; } /// /// Follow system exit event to release automatically, default true /// public bool? AutoDispose { get; set; } /// /// Enable encrypted transmission, default false /// public bool? Ssl { get; set; } /// /// 是否尝试集群模式,阿里云、腾讯云集群需要设置此选项为 false, default true /// public bool? Testcluster { get; set; } /// /// Execution error, retry attempts, default 0 /// public int? Tryit { get; set; } /// /// Connection name, use client list command to view /// public string Name { get; set; } /// /// key前辍,所有方法都会附带此前辍,csredis.Set(prefix + "key", 111) /// public string Prefix { get; set; } public override string ToString() { if (string.IsNullOrWhiteSpace(Server)) throw new ArgumentNullException(nameof(Server)); var sb = new StringBuilder(Server); if (!string.IsNullOrWhiteSpace(Password)) sb.Append($",password={Password}"); if (DefaultDatabase.HasValue) sb.Append($",defaultDatabase={DefaultDatabase}"); if (AsyncPipeline.HasValue) sb.Append($",asyncPipeline={AsyncPipeline}"); if (Poolsize.HasValue) sb.Append($",poolsize={Poolsize}"); if (IdleTimeout.HasValue) sb.Append($",idleTimeout={IdleTimeout}"); if (ConnectTimeout.HasValue) sb.Append($",connectTimeout={ConnectTimeout}"); if (SyncTimeout.HasValue) sb.Append($",syncTimeout={0}"); if (Preheat.HasValue) sb.Append($",preheat={Preheat}"); if (AutoDispose.HasValue) sb.Append($",autoDispose={AutoDispose}"); if (Ssl.HasValue) sb.Append($",ssl={Ssl}"); if (Testcluster.HasValue) sb.Append($",testcluster={Testcluster}"); if (Tryit.HasValue) sb.Append($",tryit={Tryit}"); if (!string.IsNullOrWhiteSpace(Name)) sb.Append($",name={Name}"); if (!string.IsNullOrWhiteSpace(Prefix)) sb.Append($",prefix={Prefix}"); return sb.ToString(); } } }