From c97c04770c17c36c554963bf8bb8d8fafc6a8d43 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 07 五月 2026 09:43:35 +0800
Subject: [PATCH] #地图更新刷新缓存

---
 src/main/java/com/zy/common/utils/RedisUtil.java |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/common/utils/RedisUtil.java b/src/main/java/com/zy/common/utils/RedisUtil.java
index 2c27c76..6a28925 100644
--- a/src/main/java/com/zy/common/utils/RedisUtil.java
+++ b/src/main/java/com/zy/common/utils/RedisUtil.java
@@ -118,6 +118,36 @@
         });
     }
 
+    public int deleteByPrefix(String keyPrefix) {
+        if (keyPrefix == null || keyPrefix.trim().isEmpty()) {
+            return 0;
+        }
+        Integer deletedCount = (Integer) redisTemplate.execute((org.springframework.data.redis.core.RedisCallback<Integer>) connection -> {
+            org.springframework.data.redis.core.ScanOptions options = org.springframework.data.redis.core.ScanOptions.scanOptions()
+                    .match(keyPrefix + "*")
+                    .count(1000)
+                    .build();
+            org.springframework.data.redis.core.Cursor<byte[]> cursor = connection.scan(options);
+            int count = 0;
+            try {
+                while (cursor.hasNext()) {
+                    byte[] key = cursor.next();
+                    Long deleted = connection.keyCommands().del(key);
+                    if (deleted != null) {
+                        count += deleted.intValue();
+                    }
+                }
+            } finally {
+                try {
+                    cursor.close();
+                } catch (Exception e) {
+                }
+            }
+            return count;
+        });
+        return deletedCount == null ? 0 : deletedCount;
+    }
+
     public java.util.List<Object> multiGet(java.util.Collection<String> keys) {
         return redisTemplate.opsForValue().multiGet(keys);
     }

--
Gitblit v1.9.1