@GetMapping(value = "/patternDelete")
public Set patternDeleteCache(String pattern) {
Set deleteKeys = (Set) redisTemplate.execute((RedisCallback>) connection -> {
ScanOptions scanOptions = ScanOptions.scanOptions().match("*" + pattern + "*").count(1000).build();
Cursor scan = connection.scan(scanOptions);
Set keys = new HashSet<>();
while (scan.hasNext()) {
byte[] next = scan.next();
keys.add(new String(next));
}
return keys;
});
if (CollectionUtils.isNotEmpty(deleteKeys)) {
redisTemplate.delete(deleteKeys);
}
return deleteKeys;
}
参考在RedisTemplate中使用scan代替keys指令



