/// <summary>
        /// 按value倒序获取一个hash中的对象
        /// </summary>
        /// <param name="client"></param>
        /// <param name="hashKey"></param>
        /// <param name="start">获取的第一个对象index(从1开始算,含)</param>
        /// <param name="stop">获取的最后一个对象index(从1开始算,含)</param>
        /// <returns></returns>
        public static Dictionary <string, string> GetDescendingValueFromHash(this IRedisClient client, string hashKey, int start, int stop)
        {
            var sha1   = client.GetSha1(get_descending_hash_start_stop_text);
            var result = client.ExecLuaShaAsList(sha1, hashKey, start.ToString(), stop.ToString());
            var dic    = new Dictionary <string, string>(result.Count / 2);

            for (var i = 0; i < result.Count; i += 2)
            {
                dic.Add(result[i], result[i + 1]);
            }
            return(dic);
        }
        public static List <string> HashScan(this IRedisClient redis, string hashId, long cursor = 0, int pageSize = 500)
        {
            var sha1 = redis.GetSha1(RedisScanLua.HSCAN);

            return(redis.ExecLuaShaAsList(sha1, hashId, cursor.ToString(), pageSize.ToString()));
        }
        /// <summary>
        /// 需要覆盖一个大Key时,请用本方法,注意需要定期清除gc:keys:*
        /// </summary>
        public static void RenameFast(this IRedisClient redis, string key, string newKey)
        {
            var sha1 = redis.GetSha1(Script.RenameFast);

            redis.ExecLuaShaAsList(sha1, key, newKey);
        }
        /// <summary>
        /// 需要删除一个大Key时,请用本方法,注意需要定期清除gc:keys:*
        /// </summary>
        public static void RemoveKeyByRename(this IRedisClient redis, string key)
        {
            var sha1 = redis.GetSha1(Script.DeleteKeyByRename);

            redis.ExecLuaShaAsList(sha1, key);
        }
        public static List <string> SearchKeysSafe(this IRedisClient redis, string pattern, long cursor = 0, int pageSize = 500)
        {
            var sha1 = redis.GetSha1(RedisScanLua.SCAN);

            return(redis.ExecLuaShaAsList(sha1, pattern, cursor.ToString(), pageSize.ToString()));
        }
        public static List <string> GetSlowLog(this IRedisClient client)
        {
            var sha1 = client.GetSha1(slow_log_command_text);

            return(client.ExecLuaShaAsList(sha1));
        }
        /// <summary>
        /// 获取多个hash中的相同项的值
        /// </summary>
        /// <param name="redis"></param>
        /// <param name="keyInHash">比如房间id</param>
        /// <param name="hashKeys">比如r:gift:exp,r:live:exp</param>
        /// <returns></returns>
        public static List <string> GetMiltiHashValueWithSameKey(this IRedisClient redis, string keyInHash, params string[] hashKeys)
        {
            var sha1 = redis.GetSha1(get_multi_hash_value_with_same_key);

            return(redis.ExecLuaShaAsList(sha1, hashKeys, new[] { keyInHash }));
        }