问题场景
redis开发初期创建key的时候没有设置过期时间,达到一定量时,需要删除这些没用的key.。
说明:
不能用keys查找遍历,数据量大时,keys会占用很长时间,造成其他正常业务的阻塞。可以采用scan方式。
代码
采用scan以100为每页数获取key-开头所有值并删除
ScanOptions options = ScanOptions.scanOptions().match("key-*").count(100).build();
Cursor cursor = null;
try {
cursor = redisTemplate.scan(options);
while (cursor.hasNext()) {
redisTemplate.delete(cursor.next());
}
} finally {
if(cursor != null && !cursor.isClosed()) {
cursor.close();
}
}