From 384bce80449b17651937429038c4370dbce60e7b Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 13 十月 2026 15:12:22 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/Hugray

---
 hugray-server/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/hugray-server/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java b/hugray-server/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
index 00d8687..87ef95d 100644
--- a/hugray-server/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
+++ b/hugray-server/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/service/RedisService.java
@@ -51,6 +51,21 @@
     }
 
     /**
+     * 仅当 key 不存在时写入缓存(原子操作,用于频率限制、分布式锁)
+     *
+     * @param key 缓存的键值
+     * @param value 缓存的值
+     * @param timeout 时间
+     * @param timeUnit 时间颗粒度
+     * @return true=写入成功(原先不存在);false=已被占用
+     */
+    public <T> boolean setCacheObjectIfAbsent(final String key, final T value, final Long timeout, final TimeUnit timeUnit)
+    {
+        Boolean result = redisTemplate.opsForValue().setIfAbsent(key, value, Duration.of(timeout, timeUnit.toChronoUnit()));
+        return Boolean.TRUE.equals(result);
+    }
+
+    /**
      * 设置有效时间
      *
      * @param key Redis键

--
Gitblit v1.7.1