@GetMapping(value = "/patternDelete")
public Set<String> patternDeleteCache(String pattern) {
Set<String> deleteKeys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> {
ScanOptions scanOptions = ScanOptions.scanOptions().match("*" + pattern + "*").count(1000).build();
Cursor<byte[]> scan = connection.scan(scanOptions);
Set<String> 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;
}
springboot使用redis,用scan实现keys * 的功能
于 2022-05-12 18:39:26 首次发布