springboot1.x
1. rediscluster模式是不可以直接scan操作的,我们可以拿到所有的节点,通过遍历所有节点的方式去scan
public Set<String> scan(String key) {
return redisTemplate.execute((RedisCallback<Set<String>>) connection -> {
Set<String> keys = new HashSet<>();
JedisCluster cluster = (JedisCluster) connection.getNativeConnection();
Collection<JedisPool> pools = cluster.getClusterNodes().values();
for (JedisPool pool : pools) {
Jedis resource = pool.getResource();
ScanParams scanParams = new ScanParams();
scanParams.match(key + "*");
scanParams.count(DEFAULT_COUNT);
ScanResult<String> scan = resource.scan("0", scanParams);
while (null != scan.getStringCursor()) {
keys.addAll(scan.getResult());
if (StringUtils.equals(