当前位置: 首页 > news >正文

盐田网站设计网站如何做备份

盐田网站设计,网站如何做备份,优化大师怎么强力卸载,wordpress模板打包Redis面试题#xff1a; 1、什么是事务#xff1f;2、Redis中有事务吗#xff1f;3、Redis中的事务可以回滚吗#xff1f; 答#xff1a; 1、事务是指一个完整的动作#xff0c;要么全部执行#xff0c;要么什么也没有做 2、Redis中有事务#xff0c;Redis 事务不是严…Redis面试题 1、什么是事务2、Redis中有事务吗3、Redis中的事务可以回滚吗 答 1、事务是指一个完整的动作要么全部执行要么什么也没有做 2、Redis中有事务Redis 事务不是严格意义上的事务只是用于帮助用户在一个步骤中执行多个命令。单个 Redis 命令的执行是原子性的但 Redis 没有在事务上增加任何维持原子性的机制所以 Redis 事务的执行并不是原子性的 3、Redis 事务可以理解为一个打包的批量执行脚本但批量指令并非原子化的操作中间某条指令的失败不会导致前面已做指令回滚也不会造成后续的指令不做 事务一般都是为原子性而生既然Redis事务没有原子性那他存在的意义是什么 答redis事务的主要作用就是串联多个命令防止 别的命令插队。 RedisHelper封装 1、添加StackExchange.Redis引用 Install-Package StackExchange.Redis -Version 2.0.601 2、封装 using Microsoft.AspNetCore.DataProtection.KeyManagement; using StackExchange.Redis;namespace Web.Common {/// summary/// Redis 助手/// /summarypublic static class RedisHelper{#region 获取Multiplexer实例单例模式public static IConnectionMultiplexer ConnMultiplexerInstance{get{return _ConnectionMultiplexer;// 总是返回同一个实例 }}#endregion 其它#region private field/// summary/// 连接字符串/// /summaryprivate static readonly string ConnectionString;/// summary/// redis 连接对象单例/// /summaryprivate static IConnectionMultiplexer _ConnectionMultiplexer;/// summary/// 默认的 Key 值用来当作 RedisKey 的前缀/// /summaryprivate static readonly string DefaultPrefix;/// summary/// 默认的超时时间单位毫秒/// /summaryprivate static readonly TimeSpan? DefaultTimeout;/// summary/// 默认库0-15/// /summaryprivate static readonly int DefaultDB;/// summary/// 锁/// /summaryprivate static readonly object Locker new object();/ summary/ 数据库/ /summary//private readonly IDatabase GetOperationDB(db);#endregion private field#region 构造函数static RedisHelper(){var configuration new ConfigurationBuilder().SetBasePath(AppDomain.CurrentDomain.BaseDirectory).AddJsonFile(appsettings.json).Build();// 读取Redis连接字符串ConnectionString configuration[Redis:Default:Connection] ?? 127.0.0.1:6379;//var options ConfigurationOptions.Parse(ConnectionString);//options.Password null; //密码//_ConnectionMultiplexerConnectionMultiplexer.Connect(options);_ConnectionMultiplexer ConnectionMultiplexer.Connect(ConnectionString);//默认Key的前缀DefaultPrefix configuration[Redis:Default:DefaultPrefix];//默认操作数据库如果配置了默认库则按配置的默认库没有配置则默认库为0DefaultDB configuration[Redis:Default:DefaultDB] null ? 0 : Convert.ToInt32(configuration[Redis:Default:DefaultDB]);//键的默认过期时间如果配置了过期时间则按配置规则计算过期时间没有配置则默认过期时间为7天DefaultTimeout configuration[Redis:Default:DefaultTimeout] ! null ? TimeSpan.FromSeconds(Convert.ToInt32(configuration[Redis:Default:DefaultTimeout])) : TimeSpan.FromSeconds(60);AddRegisterEvent();}/// summary/// 获取要操作的库/// /summary/// param namedb库0和-1都是第一个库1是第二个库.../param/// returns/returnsprivate static IDatabase GetOperationDB(int? db){if (db null){return ConnMultiplexerInstance.GetDatabase(DefaultDB);}else{return ConnMultiplexerInstance.GetDatabase(db.Value);}}#endregion 构造函数#region String 操作/// summary/// 设置 key 并保存字符串如果 key 已存在则覆盖值/// /summary/// param nameredisKey键/param/// param nameredisValue值/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool StringSet(string redisKey, string redisValue, TimeSpan? expiry null, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);var exptime GetRedisKeyExpireTime(expiry);return GetOperationDB(db).StringSet(redisKey, redisValue, exptime);}/// summary/// 保存多个 Key-value/// /summary/// param namekeyValuePairs键/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool StringSet(IEnumerableKeyValuePairstring, string keyValuePairs, TimeSpan? expiry null, string? prefix null, int? db null){var pairs keyValuePairs.Select(x new KeyValuePairRedisKey, RedisValue(AddKeyPrefix(x.Key, prefix), x.Value));var result GetOperationDB(db).StringSet(pairs.ToArray());_ keyValuePairs.Select(y KeyExpire(y.Key, expiry, prefix, db));//设置key的过期时间return result;}/// summary/// 存储一个对象该对象会被序列化保存/// /summary/// typeparam nameT/typeparam/// param namekey键/param/// param nameredisValue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool StringSetT(string key, T redisValue, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var exptime GetRedisKeyExpireTime(expiry);try{var json Serialize(redisValue);return GetOperationDB(db).StringSet(redisKey, json, exptime);}catch{return false;}}/// summary/// 获取字符串/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static string? StringGet(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return GetOperationDB(db).StringGet(redisKey);}/// summary/// 获取一个对象会进行反序列化/// /summary/// typeparam nameT/typeparam/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static T? StringGetT(string redisKey, string? prefix null, int? db null){try{redisKey AddKeyPrefix(redisKey, prefix);return DeserializeT(GetOperationDB(db).StringGet(redisKey));}catch{return default;}}#region async/// summary/// 保存一个字符串值/// /summary/// param nameredisKey键/param/// param nameredisValue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool StringSetAsync(string redisKey, string redisValue, TimeSpan? expiry null, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);var exptime GetRedisKeyExpireTime(expiry);return await GetOperationDB(db).StringSetAsync(redisKey, redisValue, exptime);}/// summary/// 保存一组字符串值/// /summary/// param namekeyValuePairs/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool StringSetAsync(IEnumerableKeyValuePairstring, string keyValuePairs, TimeSpan? expiry null, string? prefix null, int? db null){var pairs keyValuePairs.Select(x new KeyValuePairRedisKey, RedisValue(AddKeyPrefix(x.Key, prefix), x.Value));var result await GetOperationDB(db).StringSetAsync(pairs.ToArray());_ keyValuePairs.Select(y KeyExpire(y.Key, expiry, prefix, db));//设置key的过期时间return result;}/// summary/// 存储一个对象该对象会被序列化保存/// /summary/// typeparam nameT/typeparam/// param nameredisKey键/param/// param nameredisValue值/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool StringSetAsyncT(string redisKey, T redisValue, TimeSpan? expiry null, string? prefix null, int? db null){try{redisKey AddKeyPrefix(redisKey, prefix);var json Serialize(redisValue);var exptime GetRedisKeyExpireTime(expiry);return await GetOperationDB(db).StringSetAsync(redisKey, json, exptime);}catch{return false;}}/// summary/// 获取单个值/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskstring? StringGetAsync(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).StringGetAsync(redisKey);}/// summary/// 获取一个对象会进行反序列化/// /summary/// typeparam nameT/typeparam/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async TaskT? StringGetAsyncT(string redisKey, string? prefix null, int? db null){try{redisKey AddKeyPrefix(redisKey, prefix);return DeserializeT(await GetOperationDB(db).StringGetAsync(redisKey));}catch{return default;}}#endregion async#endregion String 操作#region Hash 操作/// summary/// 在 hash 设定值/// /summary/// param namekey键/param/// param namehashField/param/// param namevalue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool HashSet(string key, string hashField, string value, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result GetOperationDB(db).HashSet(redisKey, hashField, value);KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 在 hash 中设定值/// /summary/// param namekey键/param/// param namehashFields/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/parampublic static void HashSet(string key, IEnumerableKeyValuePairstring, string hashFields, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var entries hashFields.Select(x new HashEntry(x.Key, x.Value));GetOperationDB(db).HashSet(redisKey, entries.ToArray());KeyExpire(key, expiry, prefix, db); //设置key的过期时间 }/// summary/// 在 hash 设定值序列化/// /summary/// typeparam nameT/typeparam/// param namekey键/param/// param namehashField/param/// param nameredisValue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool HashSetT(string key, string hashField, T redisValue, TimeSpan? expiry null, string? prefix null, int? db null){try{var redisKey AddKeyPrefix(key, prefix);var json Serialize(redisValue);var result GetOperationDB(db).HashSet(redisKey, hashField, json);KeyExpire(key, expiry, prefix, db);return result;}catch{return false;}}/// summary/// 在 hash 中获取值/// /summary/// param nameredisKey键/param/// param namehashField/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static string? HashGet(string redisKey, string hashField, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return GetOperationDB(db).HashGet(redisKey, hashField);}/// summary/// 在 hash 中获取值/// /summary/// param nameredisKey键/param/// param namehashFields/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static IEnumerablestring? HashGet(string redisKey, IEnumerablestring hashFields, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);var fields hashFields.Select(x (RedisValue)x);return ConvertStrings(GetOperationDB(db).HashGet(redisKey, fields.ToArray()));}/// summary/// 从 hash 返回所有的字段值/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static IEnumerablestring? HashKeys(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return ConvertStrings(GetOperationDB(db).HashKeys(redisKey));}/// summary/// 返回 hash 中的所有值/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static IEnumerablestring? HashValues(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return ConvertStrings(GetOperationDB(db).HashValues(redisKey));}/// summary/// 在 hash 中获取值反序列化/// /summary/// typeparam nameT/typeparam/// param nameredisKey键/param/// param namehashField/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static T? HashGetT(string redisKey, string hashField, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return DeserializeT(GetOperationDB(db).HashGet(redisKey, hashField));}/// summary/// 判断该字段是否存在 hash 中/// /summary/// param nameredisKey键/param/// param namehashField/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool HashExists(string redisKey, string hashField, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return GetOperationDB(db).HashExists(redisKey, hashField);}/// summary/// 从 hash 中移除指定字段/// /summary/// param nameredisKey键/param/// param namehashField/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool HashDelete(string redisKey, string hashField, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return GetOperationDB(db).HashDelete(redisKey, hashField);}/// summary/// 从 hash 中移除指定字段/// /summary/// param nameredisKey键/param/// param namehashFields/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returns/// exception crefArgumentNullException/exceptionpublic static long HashDelete(string redisKey, IEnumerablestring? hashFields, string? prefix null, int? db null){if (hashFields is null){throw new ArgumentNullException(nameof(hashFields));}redisKey AddKeyPrefix(redisKey, prefix);var fields hashFields.Select(x (RedisValue)x);return GetOperationDB(db).HashDelete(redisKey, fields.ToArray());}#region async/// summary/// 在 hash 设定值/// /summary/// param namekey键/param/// param namehashField/param/// param namevalue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool HashSetAsync(string key, string hashField, string value, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result await GetOperationDB(db).HashSetAsync(redisKey, hashField, value);KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 在 hash 中设定值/// /summary/// param namekey键/param/// param namehashFields/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Task HashSetAsync(string key, IEnumerableKeyValuePairstring, string hashFields, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var entries hashFields.Select(x new HashEntry(x.Key, x.Value));await GetOperationDB(db).HashSetAsync(redisKey, entries.ToArray());KeyExpire(key, expiry, prefix, db);}/// summary/// 在 hash 设定值序列化/// /summary/// typeparam nameT/typeparam/// param namekey键/param/// param namehashField/param/// param namevalue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool HashSetAsyncT(string key, string hashField, T value, TimeSpan? expiry null, string? prefix null, int? db null){try{var redisKey AddKeyPrefix(key, prefix);var json Serialize(value);var result await GetOperationDB(db).HashSetAsync(redisKey, hashField, json);KeyExpire(key, expiry, prefix, db);return result;}catch{return false;}}/// summary/// 判断该字段是否存在 hash 中/// /summary/// param nameredisKey键/param/// param namehashField/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool HashExistsAsync(string redisKey, string hashField, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).HashExistsAsync(redisKey, hashField);}/// summary/// 从 hash 中移除指定字段/// /summary/// param nameredisKey键/param/// param namehashField/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool HashDeleteAsync(string redisKey, string hashField, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).HashDeleteAsync(redisKey, hashField);}/// summary/// 从 hash 中移除指定字段/// /summary/// param nameredisKey键/param/// param namehashFields/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Tasklong HashDeleteAsync(string redisKey, IEnumerablestring hashFields, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);var fields hashFields.Select(x (RedisValue)x);return await GetOperationDB(db).HashDeleteAsync(redisKey, fields.ToArray());}/// summary/// 在 hash 中获取值/// /summary/// param nameredisKey键/param/// param namehashField/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskstring? HashGetAsync(string redisKey, string hashField, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).HashGetAsync(redisKey, hashField);}/// summary/// 在 hash 中获取值/// /summary/// param nameredisKey键/param/// param namehashFields/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async TaskIEnumerablestring? HashGetAsync(string redisKey, IEnumerablestring hashFields, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);var fields hashFields.Select(x (RedisValue)x);return ConvertStrings(await GetOperationDB(db).HashGetAsync(redisKey, fields.ToArray()));}/// summary/// 从 hash 返回所有的字段值/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async TaskIEnumerablestring? HashKeysAsync(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return ConvertStrings(await GetOperationDB(db).HashKeysAsync(redisKey));}/// summary/// 返回 hash 中的所有值/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async TaskIEnumerablestring? HashValuesAsync(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return ConvertStrings(await GetOperationDB(db).HashValuesAsync(redisKey));}/// summary/// 在 hash 中获取值反序列化/// /summary/// typeparam nameT/typeparam/// param nameredisKey键/param/// param namehashField/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async TaskT? HashGetAsyncT(string redisKey, string hashField, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);var result await GetOperationDB(db).HashGetAsync(redisKey, hashField);return DeserializeT(result);}#endregion async#endregion Hash 操作#region List 操作/// summary/// 在列表头部插入值。如果键不存在先创建再插入值/// /summary/// param namekey键/param/// param nameredisValue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static long ListLeftPush(string key, string redisValue, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result GetOperationDB(db).ListLeftPush(redisKey, redisValue);KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 在列表头部插入值。如果键不存在先创建再插入值/// /summary/// typeparam nameT/typeparam/// param namekey键/param/// param nameredisValue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static long ListLeftPushT(string key, T redisValue, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result GetOperationDB(db).ListLeftPush(redisKey, Serialize(redisValue));KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 在列表尾部插入值。如果键不存在先创建再插入值/// /summary/// param namekey键/param/// param nameredisValue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static long ListRightPush(string key, string redisValue, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);long result GetOperationDB(db).ListRightPush(redisKey, redisValue);KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 在列表尾部插入值。如果键不存在先创建再插入值/// /summary/// typeparam nameT/typeparam/// param namekey键/param/// param nameredisValue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returnspush操作后列表的长度。/returnspublic static long ListRightPushT(string key, T redisValue, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result GetOperationDB(db).ListRightPush(redisKey, Serialize(redisValue));KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 移除并返回存储在该键列表的第一个元素/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns返回字符串/returnspublic static string? ListLeftPop(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return GetOperationDB(db).ListLeftPop(redisKey);}/// summary/// 移除并返回存储在该键列表的第一个元素/// /summary/// typeparam nameT/typeparam/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns返回泛型对象/returnspublic static T? ListLeftPopT(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return DeserializeT?(GetOperationDB(db).ListLeftPop(redisKey));}/// summary/// 移除并返回存储在该键列表的最后一个元素/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static string? ListRightPop(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return GetOperationDB(db).ListRightPop(redisKey);}/// summary/// 移除并返回存储在该键列表的最后一个元素/// /summary/// typeparam nameT/typeparam/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns返回泛型对象/returnspublic static T? ListRightPopT(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return DeserializeT?(GetOperationDB(db).ListRightPop(redisKey));}/// summary/// 移除列表指定键上与该值相同的元素/// /summary/// param nameredisKey键/param/// param nameredisValue/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static long ListRemove(string redisKey, string redisValue, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return GetOperationDB(db).ListRemove(redisKey, redisValue);}/// summary/// 返回列表上该键的长度如果不存在返回 0/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static long ListLength(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return GetOperationDB(db).ListLength(redisKey);}/// summary/// 返回在该列表上键所对应的元素/// /summary/// param nameredisKey键/param/// param namestart/param/// param namestop/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static IEnumerablestring? ListRange(string redisKey, long start 0L, long stop -1L, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return ConvertStrings(GetOperationDB(db).ListRange(redisKey, start, stop));}#region List-async/// summary/// 在列表尾部插入值。如果键不存在先创建再插入值/// /summary/// param namekey键/param/// param nameredisValue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Tasklong ListRightPushAsync(string key, string redisValue, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result await GetOperationDB(db).ListRightPushAsync(redisKey, redisValue);KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 在列表头部插入值。如果键不存在先创建再插入值/// /summary/// param namekey键/param/// param nameredisValue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Tasklong ListLeftPushAsync(string key, string redisValue, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result await GetOperationDB(db).ListLeftPushAsync(redisKey, redisValue);KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 在列表头部插入值。如果键不存在先创建再插入值/// /summary/// typeparam nameT/typeparam/// param namekey键/param/// param nameredisValue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Tasklong ListLeftPushAsyncT(string key, T redisValue, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result await GetOperationDB(db).ListLeftPushAsync(redisKey, Serialize(redisValue));KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 在列表尾部插入值。如果键不存在先创建再插入值/// /summary/// typeparam nameT/typeparam/// param namekey键/param/// param nameredisValue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Tasklong ListRightPushAsyncT(string key, T redisValue, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result await GetOperationDB(db).ListRightPushAsync(redisKey, Serialize(redisValue));KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 移除并返回存储在该键列表的第一个元素/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskstring? ListLeftPopAsync(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).ListLeftPopAsync(redisKey);}/// summary/// 移除并返回存储在该键列表的最后一个元素/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskstring? ListRightPopAsync(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).ListRightPopAsync(redisKey);}/// summary/// 移除列表指定键上与该值相同的元素/// /summary/// param nameredisKey键/param/// param nameredisValue/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Tasklong ListRemoveAsync(string redisKey, string redisValue, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).ListRemoveAsync(redisKey, redisValue);}/// summary/// 返回列表上该键的长度如果不存在返回 0/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Tasklong ListLengthAsync(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).ListLengthAsync(redisKey);}/// summary/// 返回在该列表上键所对应的元素/// /summary/// param nameredisKey键/param/// param namestart/param/// param namestop/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async TaskIEnumerablestring ListRangeAsync(string redisKey, long start 0L, long stop -1L, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);var query await GetOperationDB(db).ListRangeAsync(redisKey, start, stop);return query.Select(x x.ToString());}/// summary/// 移除并返回存储在该键列表的第一个元素/// /summary/// typeparam nameT/typeparam/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async TaskT? ListLeftPopAsyncT(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return DeserializeT?(await GetOperationDB(db).ListLeftPopAsync(redisKey));}/// summary/// 移除并返回存储在该键列表的最后一个元素/// /summary/// typeparam nameT/typeparam/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async TaskT? ListRightPopAsyncT(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return DeserializeT?(await GetOperationDB(db).ListRightPopAsync(redisKey));}#endregion List-async#endregion List 操作#region SortedSet 操作/// summary/// SortedSet 新增/// /summary/// param nameredisKey键/param/// param namemember/param/// param namescore/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool SortedSetAdd(string key, string member, double score, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result GetOperationDB(db).SortedSetAdd(redisKey, member, score);KeyExpire(key, expiry, prefix, db);return result;}/// summary/// SortedSet 新增/// /summary/// typeparam nameT/typeparam/// param namekey键/param/// param namemember/param/// param namescore/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool SortedSetAddT(string key, T member, double score, TimeSpan? expiry null, string? prefix null, int? db null){try{var redisKey AddKeyPrefix(key, prefix);var json Serialize(member);var result GetOperationDB(db).SortedSetAdd(redisKey, json, score);KeyExpire(key, expiry, prefix, db);return result;}catch{return false;}}/// summary/// 增量的得分排序的集合中的成员存储键值键按增量/// /summary/// param namekey键/param/// param namemember/param/// param namevalue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static double SortedSetIncrement(string key, string member, double value 1, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result GetOperationDB(db).SortedSetIncrement(redisKey, member, value);KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 在有序集合中返回指定范围的元素默认情况下从低到高。/// /summary/// param nameredisKey键/param/// param namestart/param/// param namestop/param/// param nameorder/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static IEnumerablestring SortedSetRangeByRank(string redisKey, long start 0L, long stop -1L, OrderType order OrderType.Ascending, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return GetOperationDB(db).SortedSetRangeByRank(redisKey, start, stop, (Order)order).Select(x x.ToString());}/// summary/// 返回有序集合的元素个数/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static long SortedSetLength(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return GetOperationDB(db).SortedSetLength(redisKey);}/// summary/// 返回有序集合的元素个数/// /summary/// param nameredisKey键/param/// param namememebr/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool SortedSetLength(string redisKey, string memebr, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return GetOperationDB(db).SortedSetRemove(redisKey, memebr);}#region SortedSet-Async/// summary/// SortedSet 新增/// /summary/// param nameredisKey键/param/// param namemember/param/// param namescore/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool SortedSetAddAsync(string key, string member, double score, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result await GetOperationDB(db).SortedSetAddAsync(redisKey, member, score);KeyExpire(key, expiry, prefix, db);return result;}/// summary/// SortedSet 新增/// /summary/// typeparam nameT/typeparam/// param namekey键/param/// param namemember/param/// param namescore/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool SortedSetAddAsyncT(string key, T member, double score, TimeSpan? expiry null, string? prefix null, int? db null){try{var redisKey AddKeyPrefix(key, prefix);var json Serialize(member);var result await GetOperationDB(db).SortedSetAddAsync(redisKey, json, score);KeyExpire(key, expiry, prefix, db);return result;}catch{return false;}}/// summary/// 增量的得分排序的集合中的成员存储键值键按增量/// /summary/// param namekey键/param/// param namemember/param/// param namevalue/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static Taskdouble SortedSetIncrementAsync(string key, string member, double value 1, TimeSpan? expiry null, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);var result GetOperationDB(db).SortedSetIncrementAsync(redisKey, member, value);KeyExpire(key, expiry, prefix, db);return result;}/// summary/// 在有序集合中返回指定范围的元素默认情况下从低到高。/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async TaskIEnumerablestring? SortedSetRangeByRankAsync(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return ConvertStrings(await GetOperationDB(db).SortedSetRangeByRankAsync(redisKey));}/// summary/// 返回有序集合的元素个数/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Tasklong SortedSetLengthAsync(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).SortedSetLengthAsync(redisKey);}/// summary/// 返回有序集合的元素个数/// /summary/// param nameredisKey键/param/// param namememebr/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool SortedSetRemoveAsync(string redisKey, string memebr, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).SortedSetRemoveAsync(redisKey, memebr);}#endregion SortedSet-Async#endregion SortedSet 操作#region key 操作/// summary/// 移除指定 Key/// /summary/// param namekey不带前缀的键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool KeyDelete(string key, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);return GetOperationDB(db).KeyDelete(redisKey);}/// summary/// 移除指定 Key/// /summary/// param nameredisKeys/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static long KeyDelete(IEnumerablestring redisKeys, string? prefix null, int? db null){var keys redisKeys.Select(key (RedisKey)AddKeyPrefix(key, prefix));return GetOperationDB(db).KeyDelete(keys.ToArray());}/// summary/// 校验 Key 是否存在/// /summary/// param namekey不带前缀的键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool KeyExists(string key, string? prefix null, int? db null){var redisKey AddKeyPrefix(key, prefix);return GetOperationDB(db).KeyExists(redisKey);}/// summary/// 重命名 Key/// /summary/// param nameoldKey不带前缀的键/param/// param namenewKey新的不带前缀的键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool KeyRename(string oldKey, string newKey, string? prefix null, int? db null){var redisOldKey AddKeyPrefix(oldKey, prefix);var redisNewKey AddKeyPrefix(newKey, prefix);return GetOperationDB(db).KeyRename(redisOldKey, redisNewKey);}/// summary/// 设置 Key 的过期时间/// /summary/// param nameredisKey键/param/// param nameexpiry/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static bool KeyExpire(string redisKey, TimeSpan? expiry, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);var exptime GetRedisKeyExpireTime(expiry);return GetOperationDB(db).KeyExpire(redisKey, exptime);}#region key-async/// summary/// 移除指定 Key/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool KeyDeleteAsync(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).KeyDeleteAsync(redisKey);}/// summary/// 移除指定 Key/// /summary/// param nameredisKeys/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Tasklong KeyDeleteAsync(IEnumerablestring redisKeys, string? prefix null, int? db null){var keys redisKeys.Select(key (RedisKey)AddKeyPrefix(key, prefix));return await GetOperationDB(db).KeyDeleteAsync(keys.ToArray());}/// summary/// 校验 Key 是否存在/// /summary/// param nameredisKey键/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool KeyExistsAsync(string redisKey, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);return await GetOperationDB(db).KeyExistsAsync(redisKey);}/// summary/// 重命名 Key/// /summary/// param nameoldKey待重命名的键名称/param/// param namenewKey新的键名称/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool KeyRenameAsync(string oldKey, string newKey, string? prefix null, int? db null){ var redisOldKey AddKeyPrefix(oldKey, prefix);var redisNewKey AddKeyPrefix(newKey, prefix);return await GetOperationDB(db).KeyRenameAsync(redisOldKey, redisNewKey);}/// summary/// 设置 Key 的过期时间单位毫秒/// /summary/// param nameredisKey键/param/// param nameexpiry/param/// param nameexpiry过期时间为Null表示使用appsettings.json配置文件中DefaultTimeout节点的值.如未指定该值且未设置DefaultTimeout则默认库为7天/param/// param nameprefix键的前缀为Null表示使用appsettings.json配置文件中DefaultPrefix节点的值/param/// param namedb库0-15为Null表示使用appsettings.json配置文件中DefaultDB节点的值.如未指定该值且未设置DefaultDB则默认库为0/param/// returns/returnspublic static async Taskbool KeyExpireAsync(string redisKey, TimeSpan? expiry, string? prefix null, int? db null){redisKey AddKeyPrefix(redisKey, prefix);var exptime GetRedisKeyExpireTime(expiry);return await GetOperationDB(db).KeyExpireAsync(redisKey, exptime);}#endregion key-async#endregion key 操作#region private method/// summary/// 添加 Key 的前缀/// /summary/// param namekey键/param/// param nameprefixKey 的前缀:如果为空则为appsettings.json中配置节点中的默认前缀DefaultPrefix/param/// returns/returnsprivate static string AddKeyPrefix(string key, string? prefix){if (string.IsNullOrEmpty(prefix) string.IsNullOrEmpty(DefaultPrefix)){return key;}return prefix ?? DefaultPrefix : key;}/// summary/// 键的过期时间/// /summary/// param nametime过期时间/param/// returns/returnsprivate static TimeSpan? GetRedisKeyExpireTime(TimeSpan? time){if (time null DefaultTimeout null){return TimeSpan.Zero;}else{return time ?? DefaultTimeout;}}/// summary/// 转换为字符串/// /summary/// typeparam nameT/typeparam/// param namelist/param/// returns/returnsprivate static IEnumerablestring? ConvertStringsT(IEnumerableT list) where T : struct{if (list null) throw new ArgumentNullException(nameof(list));return list.Select(x x.ToString());}#region 注册事件/// summary/// 添加注册事件/// /summaryprivate static void AddRegisterEvent(){_ConnectionMultiplexer.ConnectionRestored ConnMultiplexer_ConnectionRestored;_ConnectionMultiplexer.ConnectionFailed ConnMultiplexer_ConnectionFailed;_ConnectionMultiplexer.ErrorMessage ConnMultiplexer_ErrorMessage;_ConnectionMultiplexer.ConfigurationChanged ConnMultiplexer_ConfigurationChanged;_ConnectionMultiplexer.HashSlotMoved ConnMultiplexer_HashSlotMoved;_ConnectionMultiplexer.InternalError ConnMultiplexer_InternalError;_ConnectionMultiplexer.ConfigurationChangedBroadcast ConnMultiplexer_ConfigurationChangedBroadcast;}/// summary/// 重新配置广播时通常意味着主从同步更改/// /summary/// param namesender/param/// param namee/paramprivate static void ConnMultiplexer_ConfigurationChangedBroadcast(object sender, EndPointEventArgs e){Console.WriteLine(${nameof(ConnMultiplexer_ConfigurationChangedBroadcast)}: {e.EndPoint});}/// summary/// 发生内部错误时主要用于调试/// /summary/// param namesender/param/// param namee/paramprivate static void ConnMultiplexer_InternalError(object sender, InternalErrorEventArgs e){Console.WriteLine(${nameof(ConnMultiplexer_InternalError)}: {e.Exception});}/// summary/// 更改集群时/// /summary/// param namesender/param/// param namee/paramprivate static void ConnMultiplexer_HashSlotMoved(object sender, HashSlotMovedEventArgs e){Console.WriteLine(${nameof(ConnMultiplexer_HashSlotMoved)}: {nameof(e.OldEndPoint)}-{e.OldEndPoint} To {nameof(e.NewEndPoint)}-{e.NewEndPoint}, );}/// summary/// 配置更改时/// /summary/// param namesender/param/// param namee/paramprivate static void ConnMultiplexer_ConfigurationChanged(object sender, EndPointEventArgs e){Console.WriteLine(${nameof(ConnMultiplexer_ConfigurationChanged)}: {e.EndPoint});}/// summary/// 发生错误时/// /summary/// param namesender/param/// param namee/paramprivate static void ConnMultiplexer_ErrorMessage(object sender, RedisErrorEventArgs e){Console.WriteLine(${nameof(ConnMultiplexer_ErrorMessage)}: {e.Message});}/// summary/// 物理连接失败时/// /summary/// param namesender/param/// param namee/paramprivate static void ConnMultiplexer_ConnectionFailed(object sender, ConnectionFailedEventArgs e){Console.WriteLine(${nameof(ConnMultiplexer_ConnectionFailed)}: {e.Exception});}/// summary/// 建立物理连接时/// /summary/// param namesender/param/// param namee/paramprivate static void ConnMultiplexer_ConnectionRestored(object sender, ConnectionFailedEventArgs e){Console.WriteLine(${nameof(ConnMultiplexer_ConnectionRestored)}: {e.Exception});}#endregion 注册事件/// summary/// 序列化/// /summary/// param nameobj/param/// returns/returnsprivate static byte[]? Serialize(object? obj){if (obj null) return null;return System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(obj);}/// summary/// 反序列化/// /summary/// typeparam nameT/typeparam/// param namedata/param/// returns/returnsprivate static T? DeserializeT(byte[]? data){if (data null) return default;return System.Text.Json.JsonSerializer.DeserializeT(data);}/// summary/// 排序枚举/// /summarypublic enum OrderType{/// summary/// 升序/// /summaryAscending,/// summary/// 降序/// /summaryDescending}#endregion private method} }配置文件 在下面这个示例中我们使用了Sentinel部分来配置Redis哨兵模式。你需要指定MasterName这是你要连接的Redis主服务器的名称。然后你需要提供一个Sentinels数组其中包含哨兵节点的主机和端口信息。在示例中我们使用了三个哨兵节点但你可以根据实际情况进行更改。 {//RedisConnectionStrings: 127.0.0.1:6379,password,defaultDatabase0,connectTimeout5000,syncTimeout1000,Redis: {Host: 127.0.0.1,Port: 6379,Password: , //密码Database: 0, //默认库DefaultPrefix: slxt, //键的默认前缀DefaultTimeout: 604800, //键的默认超时时间 单位秒//ConnectionMultiplexer: StackExchange.Redis, //Redis使用的客户端实例如StackExchange.Redis和CsRedis客户端一般我们不需要//哨兵模式Sentinel: {MasterName: mymaster,Sentinels: [{Host: 127.0.0.1,Port: 26379},{Host: 127.0.0.1,Port: 26380},{Host: 127.0.0.1,Port: 26381}]}} }
http://www.zqtcl.cn/news/786046/

相关文章:

  • 国土资源局网站建设制度蓝牙 技术支持 东莞网站建设
  • 12380网站建设建议上海网站推广服务
  • 做公司网站要提供什么企业门户app
  • 免费企业网站模板 php网站301跳转怎么做
  • 沭阳哪里有做网站推广的二手车网站源码下载
  • 网站建设添加视频教程wordpress做阿里巴巴国际站
  • 四川网站建设哪家专业辽宁招投标工程信息网
  • 小语种网站建设wordpress 上传图片不显示
  • 建网站什么网最好重庆制作网站公司简介
  • 中国建站平台邯郸现代建设集团网站
  • 爱站seo排名可以做哪些网站宁波网站怎么建设
  • 洛阳市伊滨区建设局网站企业集团网站源码
  • 做修图网站电脑配置wordpress后台登录页面美化
  • 中国十大物联网公司广州网站快速排名优化
  • 发帖网站有哪些wordpress提请审批
  • 网页设计网站导航怎么弄红色字体的内蒙古住房与建设厅网站
  • 微信网站什么做百度官网认证
  • 怎么提升网站流量做五金建材市场的网站
  • 网站合作流程h5网站怎么做api对接
  • asp.net 网站 结构手机客户端网站建设
  • 图片网站怎么做SEO参与网站建设注意
  • 网站界面设计案例教程wordpress更新报错
  • Dw做网站怎么加logo如何申请小程序店铺
  • 官方网站下载官方版本wordpress文字可以动的插件
  • 企业网站模板 免费下载网站建设服务采购方案模板下载
  • 在万网申请的域名_需要把万网的账户密码给做网站的吗做鱫视频网站
  • 网站建设360wordpress 音乐下载主题
  • 站群推广wordpress换logo
  • 苏州网站建设丶好先生科技电脑怎样做幻灯片的网站
  • 什么网站可以做线上邀请函大米网络营销推广方案