Exemple #1
0
        protected void LoadDifferentKeyTypes(IRedisClient redis)
        {
            int A       = 'A';
            int Z       = 'Z';
            var letters = (Z - A + 1).Times(i => ((char)(i + A)).ToString());
            var numbers = new[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };

            redis.RemoveEntry("list:letters", "list:numbers"); //don't add duplicates to existing list
            letters.Each(x => redis.AddItemToList("list:letters", x));
            numbers.Each(x => redis.AddItemToList("list:numbers", x));

            letters.Each(x => redis.AddItemToSet("set:letters", x));
            numbers.Each(x => redis.AddItemToSet("set:numbers", x));

            var pos = 0;

            letters.Each(x => redis.AddItemToSortedSet("zset:letters", x, pos++));
            pos = 0;
            numbers.Each(x => redis.AddItemToSortedSet("zset:numbers", x, pos++));

            pos = 0;
            letters.Each(x => redis.SetEntryInHash("hash:letters", x, (pos++).ToString()));
            pos = 0;
            numbers.Each(x => redis.SetEntryInHash("hash:numbers", x, (pos++).ToString()));
        }
Exemple #2
0
 public static bool AddToSortedSet(string setId, string value, double? score = null)
 {
     using (IRedisClient client = GetClient())
     {
         if (score == null)
         {
             return client.AddItemToSortedSet(setId, value);
         }
         return client.AddItemToSortedSet(setId, value, score.Value);
     }
 }
Exemple #3
0
 /// <summary>
 /// 添加key/value,并设置value的分数
 /// </summary>
 public bool AddItemToSortedSet(string key, string value, double score)
 {
     using (IRedisClient Core = CreateRedisClient())
     {
         return(Core.AddItemToSortedSet(key, value, score));
     }
 }
Exemple #4
0
        public static void ProcessLongOperationStatus(LongOperationStatus longOperationStatus, IRedisClient redisClient, IServerEvents serverEvents)
        {
            var hashId     = string.Concat("LongOperationStatus:", longOperationStatus.ProcessKey.Split('!')[0], ":", longOperationStatus.TenantId);
            var setId      = string.Concat("LongOperationStatus:Keys:", longOperationStatus.ProcessKey.Split('!')[0], ":", longOperationStatus.TenantId);
            var processKey = string.Concat(longOperationStatus.UserId, "!", longOperationStatus.ProcessKey);

            redisClient.SetEntryInHash(hashId, processKey, longOperationStatus.ToJson());
            redisClient.AddItemToSortedSet(setId, processKey, longOperationStatus.Changed);
            redisClient.AddItemToSortedSet(string.Concat(setId, ":", longOperationStatus.UserId), processKey, longOperationStatus.Changed);

            var keys = redisClient.GetAllItemsFromSortedSet(setId);

            serverEvents.NotifyChannel(longOperationStatus.TenantId + ":" + longOperationStatus.ProcessKey.Split('!')[0], new LongOperationStatusCount {
                Tenant = keys.Count, User = keys.Count(x => x.StartsWith(longOperationStatus.UserId))
            });
        }
 private void btnAddToSortedSet_Click(object sender, EventArgs e)
 {
     using (IRedisClient client = getClient())
     {
         client.AddItemToSortedSet(txtSortedSetName.Text, txtItemKey.Text, (double)numItemScore.Value);
     }
 }
    /// <summary>
    /// 鍙栨湁搴忛泦鍚堢殑骞堕泦
    /// </summary>
    /// <param name="desKey"></param>
    /// <param name="zSetKeys"></param>
    /// <param name="aggregate"></param>
    /// <param name="poolType"></param>
    /// <returns></returns>
    public static long ZUnionStore(string desKey, string[] zSetKeys, RedisAggregate aggregate, RedisPoolType poolType)
    {
        long rtn = 0;
        PooledRedisClientManager pool  = GetRedisPool(poolType);
        IRedisClient             redis = pool.GetReadOnlyClient();

        try
        {
            if (zSetKeys == null || zSetKeys.Length == 0)
            {
                redis.Remove(desKey);
                redis.AddItemToSortedSet(desKey, "-1", -1);
                rtn = 0;
            }
            else
            {
                string[] args = new string[] { "AGGREGATE", aggregate.ToString() };
                rtn = redis.StoreUnionFromSortedSets(desKey, zSetKeys, args);
            }
        }
        catch { throw; }
        finally
        {
            if (redis != null)
            {
                redis.Dispose();
            }
        }

        return(rtn);
    }
Exemple #7
0
 /// <summary>
 /// 添加到有序集
 /// </summary>
 public bool SortedSet_Add <T>(string key, T t, double score)
 {
     using (IRedisClient redis = prcms[_path].GetClient())
     {
         string value = JsonConvert.SerializeObject(t);
         return(redis.AddItemToSortedSet(key, value, score));
     }
 }
Exemple #8
0
 /// <summary>
 ///  添加数据到 SortedSet
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="t"></param>
 /// <param name="score"></param>
 public static bool SortedSet_Add <T>(string key, T t, double score)
 {
     using (IRedisClient redis = prcm.GetClient())
     {
         string value = ServiceStack.Text.JsonSerializer.SerializeToString <T>(t);
         return(redis.AddItemToSortedSet(key, value, score));
     }
 }
Exemple #9
0
 /// <summary>
 /// 添加指定项到指定键的有序集合。
 /// </summary>
 /// <typeparam name="T">指定的项类型。</typeparam>
 /// <param name="key">指定的键。</param>
 /// <param name="t">指定的项。</param>
 /// <returns>如果成功添加,则为 true;否则为 false。</returns>
 public static bool SortedSetAdd <T>(string key, T t)
 {
     using (IRedisClient redis = GetClient())
     {
         string value = JsonSerializer.SerializeToString <T>(t);
         return(redis.AddItemToSortedSet(key, value));
     }
 }
Exemple #10
0
 /// <summary>
 ///  添加数据到 SortedSet
 /// </summary>
 /// <typeparam name="T">类型</typeparam>
 /// <param name="key">集合id</param>
 /// <param name="t">数值</param>
 /// <param name="score">排序码</param>
 /// <param name="dbId">库</param>
 public bool SortedSet_Add <T>(string key, T t, double score, long dbId = 0)
 {
     using (IRedisClient redis = CreateManager(dbId).GetClient())
     {
         string value = ServiceStack.Text.JsonSerializer.SerializeToString <T>(t);
         return(redis.AddItemToSortedSet(key, value, score));
     }
 }
Exemple #11
0
 /// <summary>
 /// 向有序集合中添加元素
 /// </summary>
 /// <param name="set"></param>
 /// <param name="value"></param>
 /// <param name="score"></param>
 public void AddItemToSortedSet(string set, string value, long score)
 {
     try
     {
         _redisCli.AddItemToSortedSet(set, value, score);
     }
     catch
     { }
 }
        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>
 /// 向有序集合中添加元素,若元素已存在,则该元素权重+1
 /// </summary>
 /// <param name="set"></param>
 /// <param name="value">{\"id\":1,\"type\":1,\"title\":\"标题\",\"des\":\"描述信息\",\"img\":\"图片路径\",\"stime\":\"开始时间\"}</param>
 /// <param name="score"></param>
 public static void AddItemToSortedSet(string set, string value, double score = 1)
 {
     using (IRedisClient redis = PooleClient.GetClient())
     {
         if (redis.SortedSetContainsItem(set, value))
         {
             score = redis.GetItemScoreInSortedSet(set, value) + 1;
             redis.RemoveItemFromSortedSet(set, value);//如果存在先移除
         }
         redis.AddItemToSortedSet(set, value, score);
     }
 }
Exemple #14
0
        /// <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));
                }

                // 把多余的数据删除掉,没必要放太多的历史数据,最近联系人列表里
            }
        }
 /// <summary>
 /// 向有序集合中添加元素,若元素已存在,则该元素权重+1
 /// </summary>
 /// <param name="set">search</param>
 /// <param name="value">{\"id\":1,\"type\":1,\"title\":\"标题\",\"des\":\"描述信息\"}</param>
 public static void AddItemToSortedSet(string set, string value)
 {
     using (IRedisClient redis = PooleClient.GetClient())
     {
         if (redis.SortedSetContainsItem(set, value))
         {
             IncrementItemInSortedSet(set, value);
         }
         else
         {
             redis.AddItemToSortedSet(set, value, 1);
         }
     }
 }
Exemple #16
0
        /// <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));
                }
            }
        }
        protected void LoadDifferentKeyTypes(IRedisClient redis)
        {
            int A = 'A';
            int Z = 'Z';
            var letters = (Z - A + 1).Times(i => ((char)(i + A)).ToString());
            var numbers = new[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };

            redis.RemoveEntry("list:letters", "list:numbers"); //don't add duplicates to existing list
            letters.Each(x => redis.AddItemToList("list:letters", x));
            numbers.Each(x => redis.AddItemToList("list:numbers", x));

            letters.Each(x => redis.AddItemToSet("set:letters", x));
            numbers.Each(x => redis.AddItemToSet("set:numbers", x));

            var pos = 0;
            letters.Each(x => redis.AddItemToSortedSet("zset:letters", x, pos++));
            pos = 0;
            numbers.Each(x => redis.AddItemToSortedSet("zset:numbers", x, pos++));

            pos = 0;
            letters.Each(x => redis.SetEntryInHash("hash:letters", x, (pos++).ToString()));
            pos = 0;
            numbers.Each(x => redis.SetEntryInHash("hash:numbers", x, (pos++).ToString()));
        }
Exemple #18
0
 /// <summary>
 ///  添加数据到 SortedSet
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="key"></param>
 /// <param name="t"></param>
 /// <param name="score"></param>
 public static bool AddSortedSet <T>(string key, T t, double score)
 {
     try
     {
         using (IRedisClient redis = prcm.GetClient())
         {
             string value = ServiceStack.Text.JsonSerializer.SerializeToString <T>(t);
             return(redis.AddItemToSortedSet(key, value, score));
         }
     }
     catch (Exception ex)
     {
         LoggerHelper.Error(ex.ToString());
     }
     return(false);
 }
Exemple #19
0
        private void HandleHostMasterRole(IRedisClient r)
        {
            var currentMaster      = r.Get <RedisHostMasterInfo>(RedisHostKey);
            var hasTakenMasterRole = false;

            if (currentMaster == null)//try to become master
            {
                if (r.SetValueIfNotExists(RedisHostKey, HostMasterInfo.ToJson()))
                {
                    IsHostMaster       = true;
                    hasTakenMasterRole = true;
                    r.ExpireEntryIn(RedisHostKey, NodeTimeoutPeriod); //give an extra 1 second to refresh.
                }
                else
                {
                    //we lost, oh well.
                    IsHostMaster = false;
                }
            }
            if (IsHostMaster) //We think we are master
            {
                if (currentMaster == null)
                {
                    currentMaster = r.Get <RedisHostMasterInfo>(RedisHostKey);
                }
                if (currentMaster.NodeId.Equals(NodeId))
                {                                                                                                        //Yep its ours, update & kick timeout
                    OnHostRefreshActions.ForEach(a => a());                                                              //run any registered actions for Host
                    r.Set(RedisHostKey, HostMasterInfo, NodeTimeoutPeriod);
                    r.AddItemToSortedSet("{0}:hosts:lastseen".Fmt(RedisPrefix), HostName, DateTime.UtcNow.ToUnixTime()); //score is unixtime UTC useful to figure out when a host dropped out
                    if (hasTakenMasterRole)
                    {
                        Log.DebugFormat("NodeId:{0} has taken HostMaster role", NodeId, currentMaster.NodeId);
                    }
                }
                else
                {
                    IsHostMaster = false;
                    Log.DebugFormat("NodeId:{0} has lost HostMaster role to {1}", NodeId, currentMaster.NodeId);
                }
            }
        }
Exemple #20
0
        protected void LoadDifferentKeyTypes(IRedisClient client)
        {
            var items = new List <string> {
                "one", "two", "three", "four"
            };
            var map = new Dictionary <string, string> {
                { "A", "one" },
                { "B", "two" },
                { "C", "three" },
                { "D", "four" },
            };

            items.ForEach(x => client.Set("urn:testkeytypes:string:" + x, x));
            items.ForEach(x => client.AddItemToList("urn:testkeytypes:list", x));
            items.ForEach(x => client.AddItemToSet("urn:testkeytypes:set", x));
            var i = 0;

            items.ForEach(x => client.AddItemToSortedSet("urn:testkeytypes:zset", x, i++));
            client.SetRangeInHash("urn:testkeytypes:hash", map);
        }
    /// <summary>
    /// 鍦ㄦ湁搴忛泦鍚堜腑璁剧疆/鍔犲叆涓€涓垚鍛?
    /// </summary>
    /// <param name="key"></param>
    /// <param name="member"></param>
    /// <param name="score"></param>
    /// <param name="poolType"></param>
    /// <returns></returns>
    public static bool ZSet(string key, string member, double score, RedisPoolType poolType)
    {
        bool success = false;
        PooledRedisClientManager pool  = GetRedisPool(poolType);
        IRedisClient             redis = pool.GetReadOnlyClient();

        try
        {
            success = redis.AddItemToSortedSet(key, member, score);
        }
        catch { throw; }
        finally
        {
            if (redis != null)
            {
                redis.Dispose();
            }
        }
        return(success);
    }
 public bool Update(string symbol, double amount)
 {
     return(redisClient.AddItemToSortedSet("REDIS_LEADERBOARD", symbol, amount));
 }
Exemple #23
0
        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);
        }
        private void AppendChildRecord(DmContainer dc, IRedisClient client)
        {
            var day = DateTime.Now.ToString("yyyy-MM-dd");

            client.AddItemToSortedSet(dc.Dc.RootId + "_" + day, dc.ToJson(), DateTime.Now.Ticks);
        }
 /// <summary>
 ///     添加值到sortSet中
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public bool AddItemToSortedSet(string key, string value)
 {
     return(RedisClient.AddItemToSortedSet(key, value));
 }