From 89c1e4f91de2a527ec825c76b0de5dd2fd42cc59 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期六, 13 八月 2022 11:30:33 +0800
Subject: [PATCH] update 重写 spring-cache 实现 更人性化的操作 支持注解指定ttl等一些参数

---
 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisCacheController.java |  123 +++++++++++++++++++++++-----------------
 1 files changed, 71 insertions(+), 52 deletions(-)

diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisCacheController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisCacheController.java
index 6877aed..7342cba 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisCacheController.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/RedisCacheController.java
@@ -1,10 +1,9 @@
 package com.ruoyi.demo.controller;
 
-import com.ruoyi.common.core.domain.AjaxResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import com.ruoyi.common.constant.CacheNames;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.utils.redis.RedisUtils;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.CachePut;
 import org.springframework.cache.annotation.Cacheable;
@@ -12,65 +11,85 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.time.Duration;
+
 /**
  * spring-cache 婕旂ず妗堜緥
  *
  * @author Lion Li
  */
 // 绫荤骇鍒� 缂撳瓨缁熶竴閰嶇疆
-//@CacheConfig(cacheNames = "redissonCacheMap")
-@Api(value = "spring-cache 婕旂ず妗堜緥", tags = {"spring-cache 婕旂ず妗堜緥"})
-@RequiredArgsConstructor(onConstructor_ = @Autowired)
+//@CacheConfig(cacheNames = CacheNames.DEMO_CACHE)
+@RequiredArgsConstructor
 @RestController
 @RequestMapping("/demo/cache")
 public class RedisCacheController {
 
-	/**
-	 * 娴嬭瘯 @Cacheable
-	 *
-	 * 琛ㄧず杩欎釜鏂规硶鏈変簡缂撳瓨鐨勫姛鑳�,鏂规硶鐨勮繑鍥炲�间細琚紦瀛樹笅鏉�
-	 * 涓嬩竴娆¤皟鐢ㄨ鏂规硶鍓�,浼氬幓妫�鏌ユ槸鍚︾紦瀛樹腑宸茬粡鏈夊��
-	 * 濡傛灉鏈夊氨鐩存帴杩斿洖,涓嶈皟鐢ㄦ柟娉�
-	 * 濡傛灉娌℃湁,灏辫皟鐢ㄦ柟娉�,鐒跺悗鎶婄粨鏋滅紦瀛樿捣鏉�
-	 * 杩欎釜娉ㄨВ銆屼竴鑸敤鍦ㄦ煡璇㈡柟娉曚笂銆�
-	 *
-	 * cacheNames 涓洪厤缃枃浠跺唴 groupId
-	 */
-	@ApiOperation("娴嬭瘯 @Cacheable")
-	@Cacheable(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null")
-	@GetMapping("/test1")
-	public AjaxResult<String> test1(String key, String value){
-		return AjaxResult.success("鎿嶄綔鎴愬姛", value);
-	}
+    /**
+     * 娴嬭瘯 @Cacheable
+     * <p>
+     * 琛ㄧず杩欎釜鏂规硶鏈変簡缂撳瓨鐨勫姛鑳�,鏂规硶鐨勮繑鍥炲�间細琚紦瀛樹笅鏉�
+     * 涓嬩竴娆¤皟鐢ㄨ鏂规硶鍓�,浼氬幓妫�鏌ユ槸鍚︾紦瀛樹腑宸茬粡鏈夊��
+     * 濡傛灉鏈夊氨鐩存帴杩斿洖,涓嶈皟鐢ㄦ柟娉�
+     * 濡傛灉娌℃湁,灏辫皟鐢ㄦ柟娉�,鐒跺悗鎶婄粨鏋滅紦瀛樿捣鏉�
+     * 杩欎釜娉ㄨВ銆屼竴鑸敤鍦ㄦ煡璇㈡柟娉曚笂銆�
+     * <p>
+     * 閲嶇偣璇存槑: 缂撳瓨娉ㄨВ涓ヨ皑涓庡叾浠栫瓫閫夋暟鎹姛鑳戒竴璧蜂娇鐢�
+     * 渚嬪: 鏁版嵁鏉冮檺娉ㄨВ 浼氶�犳垚 缂撳瓨鍑荤┛ 涓� 鏁版嵁涓嶄竴鑷撮棶棰�
+     * <p>
+     * cacheNames 鍛藉悕瑙勫垯 鏌ョ湅 {@link CacheNames} 娉ㄩ噴 鏀寔澶氬弬鏁�
+     */
+    @Cacheable(cacheNames = "demo:cache#60s#10m#20", key = "#key", condition = "#key != null")
+    @GetMapping("/test1")
+    public R<String> test1(String key, String value) {
+        return R.ok("鎿嶄綔鎴愬姛", value);
+    }
 
-	/**
-	 * 娴嬭瘯 @CachePut
-	 *
-	 * 鍔犱簡@CachePut娉ㄨВ鐨勬柟娉�,浼氭妸鏂规硶鐨勮繑鍥炲�紁ut鍒扮紦瀛橀噷闈㈢紦瀛樿捣鏉�,渚涘叾瀹冨湴鏂逛娇鐢�
-	 * 瀹冦�岄�氬父鐢ㄥ湪鏂板鏂规硶涓娿��
-	 *
-	 * cacheNames 涓� 閰嶇疆鏂囦欢鍐� groupId
-	 */
-	@ApiOperation("娴嬭瘯 @CachePut")
-	@CachePut(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null")
-	@GetMapping("/test2")
-	public AjaxResult<String> test2(String key, String value){
-		return AjaxResult.success("鎿嶄綔鎴愬姛", value);
-	}
+    /**
+     * 娴嬭瘯 @CachePut
+     * <p>
+     * 鍔犱簡@CachePut娉ㄨВ鐨勬柟娉�,浼氭妸鏂规硶鐨勮繑鍥炲�紁ut鍒扮紦瀛橀噷闈㈢紦瀛樿捣鏉�,渚涘叾瀹冨湴鏂逛娇鐢�
+     * 瀹冦�岄�氬父鐢ㄥ湪鏂板鎴栬�呭疄鏃舵洿鏂版柟娉曚笂銆�
+     * <p>
+     * cacheNames 鍛藉悕瑙勫垯 鏌ョ湅 {@link CacheNames} 娉ㄩ噴 鏀寔澶氬弬鏁�
+     */
+    @CachePut(cacheNames = CacheNames.DEMO_CACHE, key = "#key", condition = "#key != null")
+    @GetMapping("/test2")
+    public R<String> test2(String key, String value) {
+        return R.ok("鎿嶄綔鎴愬姛", value);
+    }
 
-	/**
-	 * 娴嬭瘯 @CacheEvict
-	 *
-	 * 浣跨敤浜咰acheEvict娉ㄨВ鐨勬柟娉�,浼氭竻绌烘寚瀹氱紦瀛�
-	 * 銆屼竴鑸敤鍦ㄦ洿鏂版垨鑰呭垹闄ょ殑鏂规硶涓娿��
-	 *
-	 * cacheNames 涓� 閰嶇疆鏂囦欢鍐� groupId
-	 */
-	@ApiOperation("娴嬭瘯 @CacheEvict")
-	@CacheEvict(cacheNames = "redissonCacheMap", key = "#key", condition = "#key != null")
-	@GetMapping("/test3")
-	public AjaxResult<String> test3(String key, String value){
-		return AjaxResult.success("鎿嶄綔鎴愬姛", value);
-	}
+    /**
+     * 娴嬭瘯 @CacheEvict
+     * <p>
+     * 浣跨敤浜咰acheEvict娉ㄨВ鐨勬柟娉�,浼氭竻绌烘寚瀹氱紦瀛�
+     * 銆屼竴鑸敤鍦ㄥ垹闄ょ殑鏂规硶涓娿��
+     * <p>
+     * cacheNames 鍛藉悕瑙勫垯 鏌ョ湅 {@link CacheNames} 娉ㄩ噴 鏀寔澶氬弬鏁�
+     */
+    @CacheEvict(cacheNames = CacheNames.DEMO_CACHE, key = "#key", condition = "#key != null")
+    @GetMapping("/test3")
+    public R<String> test3(String key, String value) {
+        return R.ok("鎿嶄綔鎴愬姛", value);
+    }
+
+    /**
+     * 娴嬭瘯璁剧疆杩囨湡鏃堕棿
+     * 鎵嬪姩璁剧疆杩囨湡鏃堕棿10绉�
+     * 11绉掑悗鑾峰彇 鍒ゆ柇鏄惁鐩哥瓑
+     */
+    @GetMapping("/test6")
+    public R<Boolean> test6(String key, String value) {
+        RedisUtils.setCacheObject(key, value);
+        boolean flag = RedisUtils.expire(key, Duration.ofSeconds(10));
+        System.out.println("***********" + flag);
+        try {
+            Thread.sleep(11 * 1000);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        Object obj = RedisUtils.getCacheObject(key);
+        return R.ok(value.equals(obj));
+    }
 
 }

--
Gitblit v1.9.3