|
|
|
@ -110,14 +110,13 @@ public class RedisUtils {
|
|
|
|
|
* @since Redis 6.X 以上使用 setAndKeepTTL 兼容 5.X 方案
|
|
|
|
|
*/
|
|
|
|
|
public static <T> void setCacheObject(final String key, final T value, final boolean isSaveTtl) {
|
|
|
|
|
RBucket<Object> bucket = CLIENT.getBucket(key);
|
|
|
|
|
RBucket<T> bucket = CLIENT.getBucket(key);
|
|
|
|
|
if (isSaveTtl) {
|
|
|
|
|
try {
|
|
|
|
|
bucket.setAndKeepTTL(value);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
long timeToLive = bucket.remainTimeToLive();
|
|
|
|
|
bucket.set(value);
|
|
|
|
|
bucket.expire(Duration.ofMillis(timeToLive));
|
|
|
|
|
setCacheObject(key, value, Duration.ofMillis(timeToLive));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
bucket.set(value);
|
|
|
|
@ -132,9 +131,11 @@ public class RedisUtils {
|
|
|
|
|
* @param duration 时间
|
|
|
|
|
*/
|
|
|
|
|
public static <T> void setCacheObject(final String key, final T value, final Duration duration) {
|
|
|
|
|
RBucket<T> result = CLIENT.getBucket(key);
|
|
|
|
|
result.set(value);
|
|
|
|
|
result.expire(duration);
|
|
|
|
|
RBatch batch = CLIENT.createBatch();
|
|
|
|
|
RBucketAsync<T> bucket = batch.getBucket(key);
|
|
|
|
|
bucket.setAsync(value);
|
|
|
|
|
bucket.expireAsync(duration);
|
|
|
|
|
batch.execute();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|