/// <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()))); }
public static long GetExpiration(this TimeSpan expiration, RedisExpireTimeUnit timeUnit) { if (timeUnit == RedisExpireTimeUnit.EX) { return((long)expiration.TotalSeconds); } return((long)expiration.TotalMilliseconds); }
/// <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)); }
/// <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)); }
/// <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))); } }
/// <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))); } }
/// <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))); } }
/// <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)); }
/// <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)); }
/// <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); }
/// <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); }
/// <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)); }
/// <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())); }
/// <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); }