Redis 中使用 keys *
会获取所有匹配的键,但同时也会锁住整个 redis 造成雪崩,更好的方法是使用 scan
命令,有关介绍 看这 不做过多介绍
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
使用
// 注入 RedisTemplate
private final StringRedisTemplate redisTemplate;
// 定义 scan 方法
private Set<String> scan(String pattern) {
Set<String> keys = Sets.newHashSet();
RedisConnection connection =redisTemplate.getConnectionFactory().getConnection();
ScanOptions scanOptions = ScanOptions.scanOptions()
.match(pattern)
.count(100)
.build();
Cursor<byte[]> cursor = connection.scan(scanOptions);
while (cursor.hasNext()) {
keys.add(new String(cursor.next()));
}
return keys;
}