Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for EXPIRE [NX | XX | GT | LT] options and introduce BoundKeyExpirationOperations #3115

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>3.5.0-SNAPSHOT</version>
<version>3.5.0-GH-3114-SNAPSHOT</version>

<name>Spring Data Redis</name>
<description>Spring Data module for Redis</description>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import org.springframework.data.geo.Metric;
import org.springframework.data.geo.Point;
import org.springframework.data.redis.RedisSystemException;
import org.springframework.data.redis.connection.Hash.FieldExpirationOptions;
import org.springframework.data.redis.connection.convert.Converters;
import org.springframework.data.redis.connection.convert.ListConverter;
import org.springframework.data.redis.connection.convert.MapConverter;
Expand Down Expand Up @@ -359,13 +358,13 @@ public Long exists(byte[]... keys) {
}

@Override
public Boolean expire(byte[] key, long seconds) {
return convertAndReturn(delegate.expire(key, seconds), Converters.identityConverter());
public Boolean expire(byte[] key, long seconds, ExpirationOptions.Condition condition) {
return convertAndReturn(delegate.expire(key, seconds, condition), Converters.identityConverter());
}

@Override
public Boolean expireAt(byte[] key, long unixTime) {
return convertAndReturn(delegate.expireAt(key, unixTime), Converters.identityConverter());
public Boolean expireAt(byte[] key, long unixTime, ExpirationOptions.Condition condition) {
return convertAndReturn(delegate.expireAt(key, unixTime, condition), Converters.identityConverter());
}

@Override
Expand Down Expand Up @@ -1308,13 +1307,13 @@ public Long zLexCount(String key, org.springframework.data.domain.Range<String>
}

@Override
public Boolean pExpire(byte[] key, long millis) {
return convertAndReturn(delegate.pExpire(key, millis), Converters.identityConverter());
public Boolean pExpire(byte[] key, long millis, ExpirationOptions.Condition condition) {
return convertAndReturn(delegate.pExpire(key, millis, condition), Converters.identityConverter());
}

@Override
public Boolean pExpireAt(byte[] key, long unixTimeInMillis) {
return convertAndReturn(delegate.pExpireAt(key, unixTimeInMillis), Converters.identityConverter());
public Boolean pExpireAt(byte[] key, long unixTimeInMillis, ExpirationOptions.Condition condition) {
return convertAndReturn(delegate.pExpireAt(key, unixTimeInMillis, condition), Converters.identityConverter());
}

@Override
Expand Down Expand Up @@ -1497,13 +1496,13 @@ public Boolean exists(String key) {
}

@Override
public Boolean expire(String key, long seconds) {
return expire(serialize(key), seconds);
public Boolean expire(String key, long seconds, ExpirationOptions.Condition condition) {
return expire(serialize(key), seconds, condition);
}

@Override
public Boolean expireAt(String key, long unixTime) {
return expireAt(serialize(key), unixTime);
public Boolean expireAt(String key, long unixTime, ExpirationOptions.Condition condition) {
return expireAt(serialize(key), unixTime, condition);
}

@Override
Expand Down Expand Up @@ -2491,13 +2490,13 @@ public Object execute(String command, String... args) {
}

@Override
public Boolean pExpire(String key, long millis) {
return pExpire(serialize(key), millis);
public Boolean pExpire(String key, long millis, ExpirationOptions.Condition condition) {
return pExpire(serialize(key), millis, condition);
}

@Override
public Boolean pExpireAt(String key, long unixTimeInMillis) {
return pExpireAt(serialize(key), unixTimeInMillis);
public Boolean pExpireAt(String key, long unixTimeInMillis, ExpirationOptions.Condition condition) {
return pExpireAt(serialize(key), unixTimeInMillis, condition);
}

@Override
Expand Down Expand Up @@ -2581,29 +2580,29 @@ public Long hStrLen(byte[] key, byte[] field) {
return convertAndReturn(delegate.hStrLen(key, field), Converters.identityConverter());
}

public @Nullable List<Long> applyExpiration(byte[] key,
public @Nullable List<Long> applyHashFieldExpiration(byte[] key,
org.springframework.data.redis.core.types.Expiration expiration,
FieldExpirationOptions options, byte[]... fields) {
return this.delegate.applyExpiration(key, expiration, options, fields);
ExpirationOptions options, byte[]... fields) {
return this.delegate.applyHashFieldExpiration(key, expiration, options, fields);
}

@Override
public List<Long> hExpire(byte[] key, long seconds, FieldExpirationOptions.Condition condition, byte[]... fields) {
public List<Long> hExpire(byte[] key, long seconds, ExpirationOptions.Condition condition, byte[]... fields) {
return this.delegate.hExpire(key, seconds, condition, fields);
}

@Override
public List<Long> hpExpire(byte[] key, long millis, FieldExpirationOptions.Condition condition, byte[]... fields) {
public List<Long> hpExpire(byte[] key, long millis, ExpirationOptions.Condition condition, byte[]... fields) {
return this.delegate.hpExpire(key, millis, condition, fields);
}

@Override
public List<Long> hExpireAt(byte[] key, long unixTime, FieldExpirationOptions.Condition condition, byte[]... fields) {
public List<Long> hExpireAt(byte[] key, long unixTime, ExpirationOptions.Condition condition, byte[]... fields) {
return this.delegate.hExpireAt(key, unixTime, condition, fields);
}

@Override
public List<Long> hpExpireAt(byte[] key, long unixTimeInMillis, FieldExpirationOptions.Condition condition,
public List<Long> hpExpireAt(byte[] key, long unixTimeInMillis, ExpirationOptions.Condition condition,
byte[]... fields) {
return this.delegate.hpExpireAt(key, unixTimeInMillis, condition, fields);
}
Expand All @@ -2630,27 +2629,27 @@ public List<Long> hTtl(byte[] key, TimeUnit timeUnit, byte[]... fields) {

public @Nullable List<Long> applyExpiration(String key,
org.springframework.data.redis.core.types.Expiration expiration,
FieldExpirationOptions options, String... fields) {
return applyExpiration(serialize(key), expiration, options, serializeMulti(fields));
ExpirationOptions options, String... fields) {
return this.applyHashFieldExpiration(serialize(key), expiration, options, serializeMulti(fields));
}

@Override
public List<Long> hExpire(String key, long seconds, FieldExpirationOptions.Condition condition, String... fields) {
public List<Long> hExpire(String key, long seconds, ExpirationOptions.Condition condition, String... fields) {
return hExpire(serialize(key), seconds, condition, serializeMulti(fields));
}

@Override
public List<Long> hpExpire(String key, long millis, FieldExpirationOptions.Condition condition, String... fields) {
public List<Long> hpExpire(String key, long millis, ExpirationOptions.Condition condition, String... fields) {
return hpExpire(serialize(key), millis, condition, serializeMulti(fields));
}

@Override
public List<Long> hExpireAt(String key, long unixTime, FieldExpirationOptions.Condition condition, String... fields) {
public List<Long> hExpireAt(String key, long unixTime, ExpirationOptions.Condition condition, String... fields) {
return hExpireAt(serialize(key), unixTime, condition, serializeMulti(fields));
}

@Override
public List<Long> hpExpireAt(String key, long unixTimeInMillis, FieldExpirationOptions.Condition condition,
public List<Long> hpExpireAt(String key, long unixTimeInMillis, ExpirationOptions.Condition condition,
String... fields) {
return hpExpireAt(serialize(key), unixTimeInMillis, condition, serializeMulti(fields));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import org.springframework.data.geo.GeoResults;
import org.springframework.data.geo.Metric;
import org.springframework.data.geo.Point;
import org.springframework.data.redis.connection.Hash.FieldExpirationOptions;
import org.springframework.data.redis.connection.stream.ByteRecord;
import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord;
Expand Down Expand Up @@ -162,7 +161,14 @@ default Boolean renameNX(byte[] sourceKey, byte[] targetKey) {
@Override
@Deprecated
default Boolean expire(byte[] key, long seconds) {
return keyCommands().expire(key, seconds);
return keyCommands().expire(key, seconds, ExpirationOptions.Condition.ALWAYS);
}

/** @deprecated in favor of {@link RedisConnection#keyCommands()}. */
@Override
@Deprecated
default Boolean expire(byte[] key, long seconds, ExpirationOptions.Condition condition) {
return keyCommands().expire(key, seconds, condition);
}

/** @deprecated in favor of {@link RedisConnection#keyCommands()}. */
Expand Down Expand Up @@ -204,21 +210,42 @@ default Long pTtl(byte[] key, TimeUnit timeUnit) {
@Override
@Deprecated
default Boolean pExpire(byte[] key, long millis) {
return keyCommands().pExpire(key, millis);
return keyCommands().pExpire(key, millis, ExpirationOptions.Condition.ALWAYS);
}

/** @deprecated in favor of {@link RedisConnection#keyCommands()}. */
@Override
@Deprecated
default Boolean pExpire(byte[] key, long millis, ExpirationOptions.Condition condition) {
return keyCommands().pExpire(key, millis, condition);
}

/** @deprecated in favor of {@link RedisConnection#keyCommands()}. */
@Override
@Deprecated
default Boolean pExpireAt(byte[] key, long unixTimeInMillis) {
return keyCommands().pExpireAt(key, unixTimeInMillis);
return keyCommands().pExpireAt(key, unixTimeInMillis, ExpirationOptions.Condition.ALWAYS);
}

/** @deprecated in favor of {@link RedisConnection#keyCommands()}. */
@Override
@Deprecated
default Boolean pExpireAt(byte[] key, long unixTimeInMillis, ExpirationOptions.Condition condition) {
return keyCommands().pExpireAt(key, unixTimeInMillis, condition);
}

/** @deprecated in favor of {@link RedisConnection#keyCommands()}. */
@Override
@Deprecated
default Boolean expireAt(byte[] key, long unixTime) {
return keyCommands().expireAt(key, unixTime);
return keyCommands().expireAt(key, unixTime, ExpirationOptions.Condition.ALWAYS);
}

/** @deprecated in favor of {@link RedisConnection#keyCommands()}. */
@Override
@Deprecated
default Boolean expireAt(byte[] key, long unixTime, ExpirationOptions.Condition condition) {
return keyCommands().expireAt(key, unixTime, condition);
}

/** @deprecated in favor of {@link RedisConnection#keyCommands()}. */
Expand Down Expand Up @@ -1483,41 +1510,41 @@ default Long hStrLen(byte[] key, byte[] field) {
@Override
@Deprecated
default List<Long> hExpire(byte[] key, long seconds, byte[]... fields) {
return hashCommands().hExpire(key, seconds, FieldExpirationOptions.Condition.ALWAYS, fields);
return hashCommands().hExpire(key, seconds, ExpirationOptions.Condition.ALWAYS, fields);
}

/** @deprecated in favor of {@link RedisConnection#hashCommands()}}. */
@Override
@Deprecated
default List<Long> hExpire(byte[] key, long seconds, FieldExpirationOptions.Condition condition, byte[]... fields) {
default List<Long> hExpire(byte[] key, long seconds, ExpirationOptions.Condition condition, byte[]... fields) {
return hashCommands().hExpire(key, seconds, condition, fields);
}

/** @deprecated in favor of {@link RedisConnection#hashCommands()}}. */
@Override
@Deprecated
default List<Long> hpExpire(byte[] key, long millis, byte[]... fields) {
return hashCommands().hpExpire(key, millis, FieldExpirationOptions.Condition.ALWAYS, fields);
return hashCommands().hpExpire(key, millis, ExpirationOptions.Condition.ALWAYS, fields);
}

/** @deprecated in favor of {@link RedisConnection#hashCommands()}}. */
@Override
@Deprecated
default List<Long> hpExpire(byte[] key, long millis, FieldExpirationOptions.Condition condition, byte[]... fields) {
default List<Long> hpExpire(byte[] key, long millis, ExpirationOptions.Condition condition, byte[]... fields) {
return hashCommands().hpExpire(key, millis, condition, fields);
}

/** @deprecated in favor of {@link RedisConnection#hashCommands()}}. */
@Override
@Deprecated
default List<Long> hExpireAt(byte[] key, long unixTime, byte[]... fields) {
return hashCommands().hExpireAt(key, unixTime, FieldExpirationOptions.Condition.ALWAYS, fields);
return hashCommands().hExpireAt(key, unixTime, ExpirationOptions.Condition.ALWAYS, fields);
}

/** @deprecated in favor of {@link RedisConnection#hashCommands()}}. */
@Override
@Deprecated
default List<Long> hExpireAt(byte[] key, long unixTime, FieldExpirationOptions.Condition condition,
default List<Long> hExpireAt(byte[] key, long unixTime, ExpirationOptions.Condition condition,
byte[]... fields) {
return hashCommands().hExpireAt(key, unixTime, condition, fields);
}
Expand All @@ -1526,13 +1553,13 @@ default List<Long> hExpireAt(byte[] key, long unixTime, FieldExpirationOptions.C
@Override
@Deprecated
default List<Long> hpExpireAt(byte[] key, long unixTimeInMillis, byte[]... fields) {
return hashCommands().hpExpireAt(key, unixTimeInMillis, FieldExpirationOptions.Condition.ALWAYS, fields);
return hashCommands().hpExpireAt(key, unixTimeInMillis, ExpirationOptions.Condition.ALWAYS, fields);
}

/** @deprecated in favor of {@link RedisConnection#hashCommands()}}. */
@Override
@Deprecated
default List<Long> hpExpireAt(byte[] key, long unixTimeInMillis, FieldExpirationOptions.Condition condition,
default List<Long> hpExpireAt(byte[] key, long unixTimeInMillis, ExpirationOptions.Condition condition,
byte[]... fields) {
return hashCommands().hpExpireAt(key, unixTimeInMillis, condition, fields);
}
Expand Down Expand Up @@ -1568,10 +1595,10 @@ default List<Long> hpTtl(byte[] key, byte[]... fields) {
/** @deprecated in favor of {@link RedisConnection#hashCommands()}}. */
@Override
@Deprecated
default @Nullable List<Long> applyExpiration(byte[] key,
org.springframework.data.redis.core.types.Expiration expiration, FieldExpirationOptions options,
default @Nullable List<Long> applyHashFieldExpiration(byte[] key,
org.springframework.data.redis.core.types.Expiration expiration, ExpirationOptions options,
byte[]... fields) {
return hashCommands().applyExpiration(key, expiration, options, fields);
return hashCommands().applyHashFieldExpiration(key, expiration, options, fields);
}

// GEO COMMANDS
Expand Down
Loading