/// <summary>
        /// 异步设置值并设置过期时间
        /// </summary>
        /// <typeparam name="T">值类型</typeparam>
        /// <param name="redisClient">redis实例接口</param>
        /// <param name="key">键</param>
        /// <param name="expireTimeSpan">过期时间</param>
        /// <param name="setAction">设置值的方法</param>
        /// <returns>值</returns>
        public async static Task <T> SetAndSetExpireTimeAsync <T>(this IRedisClient redisClient, string key, TimeSpan expireTimeSpan, Func <IRedisClient, string, Task <T> > setAction)
        {
            var result = await setAction(redisClient, key);

            await redisClient.ExpireAsync(key, expireTimeSpan);

            return(result);
        }
        /// <summary>
        /// 异步设置值并设置过期时间
        /// </summary>
        /// <param name="redisClient">redis实例接口</param>
        /// <param name="key">键</param>
        /// <param name="expireTimeSpan">过期时间</param>
        /// <param name="setAction">设置值的方法</param>
        /// <returns>结果可等待</returns>
        public async static Task SetAndSetExpireTimeAsync(this IRedisClient redisClient, string key, TimeSpan expireTimeSpan, Func <IRedisClient, string, Task> setAction)
        {
            await setAction(redisClient, key);

            await redisClient.ExpireAsync(key, expireTimeSpan);

            return;
        }