From 499eee67842a39fb7f60d5a73d867bbe92bfa138 Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Thu, 23 Apr 2026 14:37:24 +0800 Subject: [PATCH] =?UTF-8?q?redis=E5=B7=A5=E5=85=B7=E7=B1=BB=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/njcn/redis/utils/RedisUtil.java | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/pqs-common/common-redis/src/main/java/com/njcn/redis/utils/RedisUtil.java b/pqs-common/common-redis/src/main/java/com/njcn/redis/utils/RedisUtil.java index 4adf91345..23ec16594 100644 --- a/pqs-common/common-redis/src/main/java/com/njcn/redis/utils/RedisUtil.java +++ b/pqs-common/common-redis/src/main/java/com/njcn/redis/utils/RedisUtil.java @@ -2,9 +2,7 @@ package com.njcn.redis.utils; import lombok.RequiredArgsConstructor; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; -import org.springframework.data.redis.core.RedisCallback; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.data.redis.core.*; import org.springframework.stereotype.Component; import java.nio.charset.StandardCharsets; @@ -325,8 +323,25 @@ public class RedisUtil { * @return */ public List getLikeListAllValues(String key) { - List info=new ArrayList<>(); - for (String s : redisTemplate.keys(key + "*")) { + List info = new ArrayList<>(); + // 使用 SCAN 替代 keys,解决 Tair 禁用 KEYS 命令的问题 + Set keys = redisTemplate.execute((RedisCallback>) connection -> { + Set keySet = new HashSet<>(); + ScanOptions options = ScanOptions.scanOptions() + .match(key + "*") + .count(1000) + .build(); + + try (Cursor cursor = connection.scan(options)) { + while (cursor.hasNext()) { + keySet.add(new String(cursor.next())); + } + } catch (Exception e) { + throw new RuntimeException("Redis SCAN 模糊查询失败", e); + } + return keySet; + }); + for (String s : keys) { info.add(redisTemplate.opsForValue().get(s)); } return info;