コード例 #1
0
        /// <summary>
        /// 设置键值。
        /// </summary>
        /// <param name="client">Redis 客户端。</param>
        /// <param name="key">键名。</param>
        /// <param name="value">键值。</param>
        /// <param name="expiration">生存时间。</param>
        /// <param name="timeUnit">定位生存时间的单位。</param>
        /// <param name="behavior">定位键的行为。</param>
        /// <returns>设置成功返回 true,否则返回 false。</returns>
        public static bool Set(this IRedisClient client, string key, BinaryValue value
                               , long?expiration = null
                               , RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX
                               , RedisKeyBehavior behavior    = RedisKeyBehavior.None)
        {
            if (client == null)
            {
                throw new ArgumentNullException("client");
            }
            if (string.IsNullOrEmpty(key))
            {
                throw new ArgumentNullException("key");
            }

            List <object> args = new List <object>(5);

            args.Add(key);
            args.Add(value);
            if (expiration.HasValue && expiration.Value > 0)
            {
                args.Add(timeUnit == RedisExpireTimeUnit.EX ? "EX" : "PX");
                args.Add(expiration.Value);
            }

            if (behavior != RedisKeyBehavior.None)
            {
                args.Add(behavior == RedisKeyBehavior.NX ? "NX" : "XX");
            }

            return(client.Execute(new RedisStatus.MultiBulk("SET", args.ToArray())));
        }
コード例 #2
0
 public static long GetExpiration(this TimeSpan expiration, RedisExpireTimeUnit timeUnit)
 {
     if (timeUnit == RedisExpireTimeUnit.EX)
     {
         return((long)expiration.TotalSeconds);
     }
     return((long)expiration.TotalMilliseconds);
 }
コード例 #3
0
ファイル: RedisKeyExtensions.cs プロジェクト: glorylee/Aoite
 /// <summary>
 /// 为给定 <paramref name="key"/> 设置生存时间,当 <paramref name="key"/> 过期时(生存时间为 0 ),它会被自动删除。
 /// </summary>
 /// <param name="client">Redis 客户端。</param>
 /// <param name="key">键名。</param>
 /// <param name="expiration">生存时间。</param>
 /// <param name="timeUnit">定位生存时间的单位。</param>
 /// <returns>如果设置生存时间成功返回 true,否则返回 false。</returns>
 public static bool Expire(this IRedisClient client, string key, long expiration
     , RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX)
 {
     if(client == null) throw new ArgumentNullException(nameof(client));
     if(string.IsNullOrWhiteSpace(key)) throw new ArgumentNullException(nameof(key));
     if(expiration < 0) throw new ArgumentOutOfRangeException(nameof(expiration));
     if(timeUnit == RedisExpireTimeUnit.EX)
         return client.Execute(new RedisBoolean("EXPIRE", key, expiration));
     else
         return client.Execute(new RedisBoolean("PEXPIRE", key, expiration));
 }
コード例 #4
0
        /// <summary>
        /// 设置键值。
        /// </summary>
        /// <param name="client">Redis 客户端。</param>
        /// <param name="key">键名。</param>
        /// <param name="value">键值。</param>
        /// <param name="expiration">生存时间。</param>
        /// <param name="timeUnit">定位生存时间的单位。</param>
        /// <param name="behavior">定位键的行为。</param>
        /// <returns>设置成功返回 true,否则返回 false。</returns>
        public static bool Set(this IRedisClient client, string key, BinaryValue value
                               , TimeSpan?expiration          = null
                               , RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX
                               , RedisKeyBehavior behavior    = RedisKeyBehavior.None)
        {
            long?expiration_64 = null;

            if (expiration.HasValue)
            {
                expiration_64 = expiration.Value.GetExpiration(timeUnit);
            }

            return(Set(client, key, value, expiration_64, timeUnit, behavior));
        }
コード例 #5
0
        /// <summary>
        /// 返回给定 <paramref name="key"/> 的剩余生存时间。
        /// </summary>
        /// <param name="client">Redis 客户端。</param>
        /// <param name="key">键名。</param>
        /// <param name="timeUnit">定位生存时间的单位。</param>
        /// <returns>当 key 不存在时,返回 -2 。当 <paramref name="key"/> 存在但没有设置剩余生存时间时,返回 -1 。否则,以秒为单位,返回 <paramref name="key"/> 的剩余生存时间。</returns>
        public static long Ttl(this IRedisClient client, string key
                               , RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX)
        {
            if (client == null)
            {
                throw new ArgumentNullException("client");
            }
            if (string.IsNullOrEmpty(key))
            {
                throw new ArgumentNullException("key");
            }

            if (timeUnit == RedisExpireTimeUnit.EX)
            {
                return(client.Execute(new RedisInteger("TTL", key)));
            }
            else
            {
                return(client.Execute(new RedisInteger("PTTL", key)));
            }
        }
コード例 #6
0
 /// <summary>
 /// 为给定 <paramref name="key"/> 设置生存时间,当 <paramref name="key"/> 过期时(生存时间为 0 ),它会被自动删除。
 /// </summary>
 /// <param name="client">Redis 客户端。</param>
 /// <param name="key">键名。</param>
 /// <param name="expiration">生存时间。</param>
 /// <param name="timeUnit">定位生存时间的单位。</param>
 /// <returns>如果设置生存时间成功返回 true,否则返回 false。</returns>
 public static bool Expire(this IRedisClient client, string key, long expiration
                           , RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX)
 {
     if (client == null)
     {
         throw new ArgumentNullException("client");
     }
     if (string.IsNullOrEmpty(key))
     {
         throw new ArgumentNullException("key");
     }
     if (expiration < 0)
     {
         throw new ArgumentOutOfRangeException("expiration");
     }
     if (timeUnit == RedisExpireTimeUnit.EX)
     {
         return(client.Execute(new RedisBoolean("EXPIRE", key, expiration)));
     }
     else
     {
         return(client.Execute(new RedisBoolean("PEXPIRE", key, expiration)));
     }
 }
コード例 #7
0
ファイル: RedisKeyExtensions.cs プロジェクト: yufengfei/Aoite
 /// <summary>
 /// 为给定 <paramref name="key"/> 设置生存时间,当 <paramref name="key"/> 过期时(生存时间为 0 ),它会被自动删除。
 /// </summary>
 /// <param name="client">Redis 客户端。</param>
 /// <param name="key">键名。</param>
 /// <param name="timestamp">UNIX 时间戳(unix timestamp)。</param>
 /// <param name="timeUnit">定位生存时间的单位。</param>
 /// <returns>如果设置生存时间成功返回 true,否则返回 false。</returns>
 public static bool ExpireAt(this IRedisClient client, string key, long timestamp
                             , RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX)
 {
     if (client == null)
     {
         throw new ArgumentNullException(nameof(client));
     }
     if (string.IsNullOrWhiteSpace(key))
     {
         throw new ArgumentNullException(nameof(key));
     }
     if (timestamp < 0)
     {
         throw new ArgumentOutOfRangeException(nameof(timestamp));
     }
     if (timeUnit == RedisExpireTimeUnit.EX)
     {
         return(client.Execute(new RedisBoolean("EXPIREAT", key, timestamp)));
     }
     else
     {
         return(client.Execute(new RedisBoolean("PEXPIREAT", key, timestamp)));
     }
 }
コード例 #8
0
 /// <summary>
 /// 为给定 <paramref name="key"/> 设置生存时间,当 <paramref name="key"/> 过期时(生存时间为 0 ),它会被自动删除。
 /// </summary>
 /// <param name="client">Redis 客户端。</param>
 /// <param name="key">键名。</param>
 /// <param name="expiration">生存时间。</param>
 /// <param name="timeUnit">定位生存时间的单位。</param>
 /// <returns>设置成功返回 true,否则返回 false。</returns>
 public static bool Expire(this IRedisClient client, string key, TimeSpan expiration,
                           RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX)
 {
     return(Expire(client, key, expiration.GetExpiration(timeUnit), timeUnit));
 }
コード例 #9
0
 /// <summary>
 /// 为给定 <paramref name="key"/> 设置生存时间,当 <paramref name="key"/> 过期时(生存时间为 0 ),它会被自动删除。
 /// </summary>
 /// <param name="client">Redis 客户端。</param>
 /// <param name="key">键名。</param>
 /// <param name="expirationDate">到期时间。</param>
 /// <param name="timeUnit">定位生存时间的单位。</param>
 /// <returns>如果设置生存时间成功返回 true,否则返回 false。</returns>
 public static bool ExpireAt(this IRedisClient client, string key, DateTime expirationDate
                             , RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX)
 {
     return(ExpireAt(client, key, RedisDate.ToTimestamp(expirationDate).GetExpiration(timeUnit), timeUnit));
 }
コード例 #10
0
ファイル: RedisKeyExtensions.cs プロジェクト: glorylee/Aoite
 /// <summary>
 /// 为给定 <paramref name="key"/> 设置生存时间,当 <paramref name="key"/> 过期时(生存时间为 0 ),它会被自动删除。
 /// </summary>
 /// <param name="client">Redis 客户端。</param>
 /// <param name="key">键名。</param>
 /// <param name="expirationDate">到期时间。</param>
 /// <param name="timeUnit">定位生存时间的单位。</param>
 /// <returns>如果设置生存时间成功返回 true,否则返回 false。</returns>
 public static bool ExpireAt(this IRedisClient client, string key, DateTime expirationDate
     , RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX)
 {
     return ExpireAt(client, key, RedisDate.ToTimestamp(expirationDate).GetExpiration(timeUnit), timeUnit);
 }
コード例 #11
0
ファイル: RedisKeyExtensions.cs プロジェクト: glorylee/Aoite
 /// <summary>
 /// 为给定 <paramref name="key"/> 设置生存时间,当 <paramref name="key"/> 过期时(生存时间为 0 ),它会被自动删除。
 /// </summary>
 /// <param name="client">Redis 客户端。</param>
 /// <param name="key">键名。</param>
 /// <param name="expiration">生存时间。</param>
 /// <param name="timeUnit">定位生存时间的单位。</param>
 /// <returns>设置成功返回 true,否则返回 false。</returns>
 public static bool Expire(this IRedisClient client, string key, TimeSpan expiration,
     RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX)
 {
     return Expire(client, key, expiration.GetExpiration(timeUnit), timeUnit);
 }
コード例 #12
0
ファイル: RedisKeyExtensions.cs プロジェクト: glorylee/Aoite
        /// <summary>
        /// 返回给定 <paramref name="key"/> 的剩余生存时间。
        /// </summary>
        /// <param name="client">Redis 客户端。</param>
        /// <param name="key">键名。</param>
        /// <param name="timeUnit">定位生存时间的单位。</param>
        /// <returns>当 key 不存在时,返回 -2 。当 <paramref name="key"/> 存在但没有设置剩余生存时间时,返回 -1 。否则,以秒为单位,返回 <paramref name="key"/> 的剩余生存时间。</returns>
        public static long Ttl(this IRedisClient client, string key
            , RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX)
        {
            if(client == null) throw new ArgumentNullException(nameof(client));
            if(string.IsNullOrWhiteSpace(key)) throw new ArgumentNullException(nameof(key));

            if(timeUnit == RedisExpireTimeUnit.EX)
                return client.Execute(new RedisInteger("TTL", key));
            else
                return client.Execute(new RedisInteger("PTTL", key));
        }
コード例 #13
0
        /// <summary>
        /// 设置键值。
        /// </summary>
        /// <param name="client">Redis 客户端。</param>
        /// <param name="key">键名。</param>
        /// <param name="value">键值。</param>
        /// <param name="expiration">生存时间。</param>
        /// <param name="timeUnit">定位生存时间的单位。</param>
        /// <param name="behavior">定位键的行为。</param>
        /// <returns>设置成功返回 true,否则返回 false。</returns>
        public static bool Set(this IRedisClient client, string key, BinaryValue value
            , long? expiration = null
            , RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX
            , RedisKeyBehavior behavior = RedisKeyBehavior.None)
        {
            if(client == null) throw new ArgumentNullException(nameof(client));
            if(string.IsNullOrWhiteSpace(key)) throw new ArgumentNullException(nameof(key));

            List<object> args = new List<object>(5);
            args.Add(key);
            args.Add(value);
            if(expiration.HasValue && expiration.Value > 0)
            {
                args.Add(timeUnit == RedisExpireTimeUnit.EX ? "EX" : "PX");
                args.Add(expiration.Value);
            }

            if(behavior != RedisKeyBehavior.None) args.Add(behavior == RedisKeyBehavior.NX ? "NX" : "XX");

            return client.Execute(new RedisStatus.MultiBulk("SET", args.ToArray()));
        }
コード例 #14
0
        /// <summary>
        /// 设置键值。
        /// </summary>
        /// <param name="client">Redis 客户端。</param>
        /// <param name="key">键名。</param>
        /// <param name="value">键值。</param>
        /// <param name="expiration">生存时间。</param>
        /// <param name="timeUnit">定位生存时间的单位。</param>
        /// <param name="behavior">定位键的行为。</param>
        /// <returns>设置成功返回 true,否则返回 false。</returns>
        public static bool Set(this IRedisClient client, string key, BinaryValue value
            , TimeSpan? expiration = null
            , RedisExpireTimeUnit timeUnit = RedisExpireTimeUnit.EX
            , RedisKeyBehavior behavior = RedisKeyBehavior.None)
        {
            long? expiration_64 = null;
            if(expiration.HasValue) expiration_64 = expiration.Value.GetExpiration(timeUnit);

            return Set(client, key, value, expiration_64, timeUnit, behavior);
        }