/// <summary> /// 设置缓存过期 /// </summary> /// <param name="key"></param> /// <param name="datetime"></param> public void Hash_SetExpire(string key, DateTime datetime) { using (IRedisClient redis = prcms[_path].GetClient()) { redis.ExpireEntryAt(key, datetime); } }
/// <summary> /// 设置缓存过期 /// </summary> /// <param name="key"></param> /// <param name="datetime"></param> public static void SortedSet_SetExpire(string key, DateTime datetime) { using (IRedisClient redis = prcm.GetClient()) { redis.ExpireEntryAt(key, datetime); } }
/// <summary> /// 设置缓存过期 /// </summary> /// <param name="key">键值</param> /// <param name="datetime">过期时间</param> /// <param name="dbId">库</param> public static void SetExpire(string key, DateTime datetime, long dbId = 0) { using (IRedisClient redis = CreateManager(dbId).GetClient()) { redis.ExpireEntryAt(key, datetime); } }
/// <summary> /// 添加key/value ,并设置过期时间 /// </summary> public void Add(string key, string value, DateTime dt) { using (IRedisClient Core = CreateRedisClient()) { Core.AddItemToList(key, value); Core.ExpireEntryAt(key, dt); } }
public static bool SetCacheKeyExp(string Key, DateTime expiretime) { IRedisClient Redis = RedisManager.GetClient(); bool bok = Redis.ExpireEntryAt(Key, expiretime); Redis.Dispose(); return(bok); }
/// <summary> /// 设置缓存过期 /// </summary> /// <param name="key"></param> /// <param name="datetime"></param> public static void Hash_SetExpire(string key, DateTime datetime) { using (IRedisClient redis = prcm.GetClient()) { redis.Password = Constant.RedisPwd; redis.ExpireEntryAt(key, datetime); } }
/// <summary> /// 为key添加多个值,并设置过期时间 /// </summary> public void Add(string key, List <string> values, DateTime dt) { using (IRedisClient Core = CreateRedisClient()) { Core.AddRangeToList(key, values); Core.ExpireEntryAt(key, dt); } }
private void CreateNew(DmContainer dc, IRedisClient client) { var day = DateTime.Now.ToString("yyyy-MM-dd"); var geneal = "dm" + day; //var time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:dd"); //var detail = (dc.Dc.RootId + "-" + dc.Dc.Tag ?? string.Empty) + time; client.AddItemToSortedSet(geneal, dc.Dc.RootId + "_" + day, DateTime.Now.Ticks); client.ExpireEntryAt(geneal, DateTime.Now.AddDays(1).Date); client.AddItemToSortedSet(dc.Dc.RootId + "_" + day, dc.ToJson(), DateTime.Now.Ticks); client.ExpireEntryAt(geneal, DateTime.Now.AddDays(1).Date); //var allItems = client.GetAllItemsFromSortedSet(geneal); //foreach (string item in allItems) //{ // var details = client.GetAllItemsFromSortedSet(item); //} }
/// <summary> /// 存储数据到hash表 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="dataKey"></param> /// <returns></returns> public static bool Hash_Set <T>(string key, string dataKey, T t) { using (IRedisClient redis = prcm.GetClient()) { string value = ServiceStack.Text.JsonSerializer.SerializeToString <T>(t); bool r = redis.SetEntryInHash(key, dataKey, value); redis.ExpireEntryAt(key + ":" + dataKey, DateTime.Now.AddDays(7)); return(r); } }
/// <summary> /// 设置过期时间 /// </summary> /// <param name="redisKey">Key</param> /// <param name="dateTime">过期时间</param> /// <returns></returns> public static bool Expire(string redisKey, DateTime expireDateTime) { bool result = false; using (IRedisClient client = RedisManager.GetClient()) { result = client.ExpireEntryAt(redisKey, expireDateTime); } return(result); }
public override void ResetItemTimeout(HttpContext context, string id) { using (IRedisClient redisClient = this.CreateRedisClient()) { SessionItem currentSessionItem = redisClient.Get <SessionItem>(this.GetRedisKey(id)); if (currentSessionItem != null) { redisClient.ExpireEntryAt(this.GetRedisKey(id), DateTime.Now.AddMinutes(this.sessionConfigSection.Timeout.TotalMinutes)); } } }
public override void SetItemInList <T>(string listId, int listIndex, T value, DateTime?expireTime) { using (IRedisClient redis = GetRedisClient()) { redis.SetItemInList(listId, listIndex, JsonConvert.SerializeObject(value, JsonSetting)); if (expireTime != null && expireTime.Value > DateTime.Now) { redis.ExpireEntryAt(listId, expireTime.Value); } } }
public override void RPush <T>(string listId, T value, DateTime?expireTime) { using (IRedisClient redis = GetRedisClient()) { var strValue = JsonConvert.SerializeObject(value, JsonSetting); redis.AddItemToList(listId, strValue); if (expireTime != null && expireTime.Value > DateTime.Now) { redis.ExpireEntryAt(listId, expireTime.Value); } } }
/// <summary> /// 获取自增数据 /// 平扬 /// 2015年4月9日 09:18:02 /// </summary> /// <param name="key">键</param> /// <param name="expiredTime">生命周期</param> /// <returns>自增值</returns> public long Incr(string key, DateTime expiredTime) { using (IRedisClient Redis = RedisManager.GetClient()) { long tempNum = Redis.IncrementValue(key); if (expiredTime != null) { Redis.ExpireEntryAt(key, expiredTime); } return(tempNum); } }
/// <summary> /// 设置缓存过期 /// </summary> /// <param name="key"></param> /// <param name="datetime"></param> public void List_SetExpire(string key, DateTime datetime) { if (prcm != null) { using (IRedisClient redis = prcm.GetClient()) { if (redis != null) { redis.ExpireEntryAt(key, datetime); } } } }
/// <summary> /// 把未阅读的消息,进行缓存处理 /// 2015-10-08 吉日嘎拉 优化代码 /// </summary> /// <param name="entity">消息</param> public void CacheProcessing(IRedisClient redisClient, BaseMessageEntity entity, DateTime?expireAt = null) { // 需要把消息本身放一份在缓存服务器里 if (entity != null) { SetCache(redisClient, entity); if (!string.IsNullOrEmpty(entity.ReceiverId)) { // 把消息的主键放在有序集合里, 尽量存放小数字,不要太长了 redisClient.AddItemToSortedSet(entity.ReceiverId, entity.Id, entity.CreateOn.Value.Ticks - (new DateTime(2015, 10, 1)).Ticks); } if (!string.IsNullOrEmpty(entity.CreateUserId)) { if (!expireAt.HasValue) { expireAt = DateTime.Now.AddDays(15); } // 设置一个需要阅读的标志(过期时间) redisClient.ExpireEntryAt(entity.CreateUserId, expireAt.Value); } if (!string.IsNullOrEmpty(entity.CreateUserId)) { // 设置一个最近联络人标注,把最近联系人放在有序集合里(过期时间) // 设置过期时间,防止长时间不能释放 redisClient.AddItemToSortedSet("r" + entity.CreateUserId, entity.ReceiverId, entity.CreateOn.Value.Ticks - (new DateTime(2015, 10, 1)).Ticks); redisClient.ExpireEntryAt("r" + entity.CreateUserId, DateTime.Now.AddDays(15)); } if (!string.IsNullOrEmpty(entity.ReceiverId)) { redisClient.AddItemToSortedSet("r" + entity.ReceiverId, entity.CreateUserId, entity.CreateOn.Value.Ticks - (new DateTime(2015, 10, 1)).Ticks); redisClient.ExpireEntryAt("r" + entity.ReceiverId, DateTime.Now.AddDays(15)); } // 把多余的数据删除掉,没必要放太多的历史数据,最近联系人列表里 } }
public static void SetExpire(string key, int timeout) { IRedisClient client = pool.GetClient(); try { client.ExpireEntryAt(key, DateTime.Now.AddMinutes(timeout)); } finally { client.Dispose(); } }
/// <summary> /// 设置缓存过期 /// </summary> /// <param name="key"></param> /// <param name="datetime"></param> public static void SetExpireSortedSet(string key, DateTime datetime) { try { using (IRedisClient redis = prcm.GetClient()) { redis.ExpireEntryAt(key, datetime); } } catch (Exception ex) { LoggerHelper.Error(ex.ToString()); } }
/// <summary> /// 按实体缓存承包区 宋彪 /// </summary> /// <param name="redisClient"></param> /// <param name="score"></param> /// <param name="departmentEntity"></param> public static void CacheContractAreaPreheatingSpelling(IRedisClient redisClient, BaseDepartmentEntity departmentEntity, double score = 0) { // 承包区主管id字段不可为空,对应的是用户的Id if (!string.IsNullOrWhiteSpace(departmentEntity.ManagerId)) { string contractArea = departmentEntity.ManagerId + ";" + departmentEntity.Code + ";" + departmentEntity.FullName; string key = string.Empty; // 01:所有承包区查询的缓存数据方法 编号是按网点code生成 至少输入4个编号才返回查询结果 for (int i = 4; i <= departmentEntity.Code.Length; i++) { key = "ContractArea:" + departmentEntity.CompanyId + ":" + departmentEntity.Code.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, contractArea, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } // 02:按承包区名字查询的缓存 for (int i = 1; i <= departmentEntity.FullName.Length; i++) { key = "ContractArea:" + departmentEntity.CompanyId + ":" + departmentEntity.FullName.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, contractArea, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } } }
/// <summary> /// 向redis中添加一条数据 /// </summary> /// <typeparam name="T">类型</typeparam> /// <param name="key">键</param> /// <param name="t">对象</param> /// <param name="expireTime">过期时间</param> public void AddValueToRedis <T>(string key, T t, DateTime?expireTime) { try { using (IRedisClient client = RedisManager.GetRedisWriteClient()) { client.Add <T>(key, t); if (expireTime.HasValue) { client.ExpireEntryAt(key, expireTime.Value); } } } catch (Exception ex) { LogHelper.WriteLog <T>(this.GetType(), "AddValueToRedis;键:" + key + "", "鲍晨", t, ex); } }
public override void RPushList <T>(string listId, List <T> values, DateTime?expireTime) { using (IRedisClient redis = GetRedisClient()) { List <string> lststr = new List <string>(); foreach (var value in values) { var strValue = JsonConvert.SerializeObject(value, JsonSetting); lststr.Add(strValue); } if (lststr.Count > 0) { redis.AddRangeToList(listId, lststr); } if (expireTime != null && expireTime.Value > DateTime.Now) { redis.ExpireEntryAt(listId, expireTime.Value); } } }
public override bool AddExpire(string key, int nTimeMinute = 10) { var isfalse = false; try { if (string.IsNullOrEmpty(key)) { return(isfalse); } InitCache(); //isfalse = redis.ExpireEntryIn(key, TimeSpan.FromMinutes(nTimeMinute)); isfalse = redis.ExpireEntryAt(key, DateTime.Now.AddMinutes(nTimeMinute)); } catch (Exception ex) { } finally { this.Dispose(); } return(isfalse); }
/// <summary> /// 璁剧疆杩囨湡鏃堕棿 /// </summary> /// <param name="key"></param> /// <param name="seconds"></param> /// <param name="poolType"></param> /// <returns></returns> public static bool Expire(string key, int seconds, RedisPoolType poolType) { bool success = false; PooledRedisClientManager pool = GetRedisPool(poolType); IRedisClient redis = pool.GetReadOnlyClient(); try { success = redis.ExpireEntryAt(key, DateTime.Now.AddSeconds(seconds)); } catch { throw; } finally { if (redis != null) { redis.Dispose(); } } return(success); }
public void Refresh(double timeout) { ExpiresAt = DateTime.UtcNow.AddMinutes(timeout); if (redisClient != null) { var keys = redisClient.SearchKeys(SearchKeyString()); if (keys != null & keys.Count > 0) { if (timeout >= 0) { foreach (var s in keys) { redisClient.ExpireEntryAt(s, ExpiresAt); } } else { redisClient.RemoveAll(keys); } } } }
/// <summary> /// 调整过期时间 /// </summary> public bool Expire(DateTime expire) { return(redis.ExpireEntryAt(Key, expire)); }
public static void CachePreheatingSpelling(IRedisClient redisClient, BaseOrganizeEntity organizeEntity, double score = 0) { // 读取到的数据直接强制设置到缓存里 string id = organizeEntity.Id; // 2016-01-06 吉日嘎拉 网点编号不能大小写转换,否则查询就乱套了,不能改变原样 string code = organizeEntity.Code; string fullName = organizeEntity.FullName; string simpleSpelling = organizeEntity.SimpleSpelling; string organize = id + ";" + code + ";" + fullName; if (organizeEntity.Enabled.HasValue && organizeEntity.Enabled.Value == 0) { // organize += " 失效"; } if (organizeEntity.DeletionStateCode.HasValue && organizeEntity.DeletionStateCode.Value == 1) { // organize += " 已删除"; } string key = string.Empty; // 01:所有网点查询的缓存数据方法 for (int i = 2; i <= code.Length; i++) { // 2016-01-06 吉日嘎拉 这里需要小写,提高效率,提高有善度 key = code.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 1; i <= fullName.Length; i++) { key = fullName.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 2; i <= simpleSpelling.Length; i++) { key = simpleSpelling.Substring(0, i); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } // 02:结算中心主键缓存数据方法 string costCenterId = organizeEntity.CostCenterId; if (!string.IsNullOrEmpty(costCenterId)) { for (int i = 2; i <= code.Length; i++) { // 2016-01-06 吉日嘎拉 这里需要小写,提高效率,提高有善度 key = "CostCenterId:" + costCenterId + ":" + code.Substring(0, i).ToLower();; redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 1; i <= fullName.Length; i++) { key = "CostCenterId:" + costCenterId + ":" + fullName.Substring(0, i).ToLower();; redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 2; i <= simpleSpelling.Length; i++) { key = "CostCenterId:" + costCenterId + ":" + simpleSpelling.Substring(0, i); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } } // 10: 按一级网点缓存数据方法 string companyId = organizeEntity.CompanyId; if (!string.IsNullOrEmpty(companyId)) { for (int i = 0; i <= code.Length; i++) { // 2016-01-18 吉日嘎拉 这里需要小写,提高效率,提高有善度 key = "CompanyId:" + companyId + ":" + code.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 1; i <= fullName.Length; i++) { key = "CompanyId:" + companyId + ":" + fullName.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 2; i <= simpleSpelling.Length; i++) { key = "CompanyId:" + companyId + ":" + simpleSpelling.Substring(0, i); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } } // 03:按省缓存数据方法 string provinceId = organizeEntity.ProvinceId; if (!string.IsNullOrEmpty(provinceId)) { for (int i = 2; i <= code.Length; i++) { // 2016-01-06 吉日嘎拉 这里需要小写,提高效率,提高有善度 key = "ProvinceId:" + provinceId + ":" + code.Substring(0, i).ToLower();; redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 1; i <= fullName.Length; i++) { key = "ProvinceId:" + provinceId + ":" + fullName.Substring(0, i).ToLower();; redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 2; i <= simpleSpelling.Length; i++) { key = "ProvinceId:" + provinceId + ":" + simpleSpelling.Substring(0, i); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } } // 04:按市缓存数据方法 string cityId = organizeEntity.CityId; if (!string.IsNullOrEmpty(cityId)) { for (int i = 2; i <= code.Length; i++) { // 2016-01-06 吉日嘎拉 这里需要小写,提高效率,提高有善度 key = "CityId:" + cityId + ":" + code.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 1; i <= fullName.Length; i++) { key = "CityId:" + cityId + ":" + fullName.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 2; i <= simpleSpelling.Length; i++) { key = "CityId:" + cityId + ":" + simpleSpelling.Substring(0, i); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } } // 05:父级主键缓存数据方法 string parentId = organizeEntity.ParentId; if (!string.IsNullOrEmpty(parentId)) { for (int i = 2; i <= code.Length; i++) { // 2016-01-06 吉日嘎拉 这里需要小写,提高效率,提高有善度 key = "ParentId:" + parentId + ":" + code.Substring(0, i).ToLower();; redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 1; i <= fullName.Length; i++) { key = "ParentId:" + parentId + ":" + fullName.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 2; i <= simpleSpelling.Length; i++) { key = "ParentId:" + parentId + ":" + simpleSpelling.Substring(0, i).Trim(); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } } // 06:所有下属递归的方式进行快速缓存检索(START WITH CONNECT BY PRIOR) 包括自己 string startId = organizeEntity.Id; while (!string.IsNullOrEmpty(startId)) { for (int i = 2; i <= code.Length; i++) { // 2016-01-06 吉日嘎拉 这里需要小写,提高效率,提高有善度 key = "StartId:" + startId + ":" + code.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 1; i <= fullName.Length; i++) { key = "StartId:" + startId + ":" + fullName.Substring(0, i).ToLower();; redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 2; i <= simpleSpelling.Length; i++) { key = "StartId:" + startId + ":" + simpleSpelling.Substring(0, i); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } // 获取上级的上级,一直进行循环,在缓存里进行计算,提高效率 startId = BaseOrganizeManager.GetParentIdByCache(startId); } // 07:发航空 string sendAir = organizeEntity.SendAir.ToString(); if (!string.IsNullOrEmpty(sendAir) && sendAir.Equals("1")) { for (int i = 2; i <= code.Length; i++) { // 2016-01-06 吉日嘎拉 这里需要小写,提高效率,提高有善度 key = "SendAir:" + code.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 1; i <= fullName.Length; i++) { key = "SendAir:" + fullName.Substring(0, i).ToLower(); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } for (int i = 2; i <= simpleSpelling.Length; i++) { key = "SendAir:" + simpleSpelling.Substring(0, i); redisClient.AddItemToSortedSet(key, organize, score); redisClient.ExpireEntryAt(key, DateTime.Now.AddDays(15)); } } // 输出到屏幕看看运行效果如何?心里有个数 System.Console.WriteLine(score.ToString() + " " + organize); }
/// <summary> /// 从左侧添加值并设置过期时间 /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <param name="dt"></param> public void LeftPush(string key, string value, DateTime dt) { RedisClient.PushItemToList(key, value); RedisClient.ExpireEntryAt(key, dt); }