From a8d798c38a6e7fb186b6d8a20953af200caefc8c Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期五, 22 七月 2022 17:34:14 +0800
Subject: [PATCH] fix 修复 RedisUtils 并发 set ttl 错误问题
---
ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java | 13 +++++++------
1 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java
index 20f3ea3..c14b393 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/RedisUtils.java
@@ -110,14 +110,13 @@
* @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 @@
* @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();
}
/**
--
Gitblit v1.9.3