redis 集合间运算(SDIFF-SINTER-SUNION)
使用redis差值计算加定时任务删除 云服务器上的垃圾图片
这些大量只上传不入库的图片会堆积在服务器里面变成垃圾图片(这些图片没有被表单数据引用)
使用两个set集合来存这些图片名
//套餐图片所有图片名称
public static final String SETMEAL_PIC_RESOURCES = "setmealPicResources";
//套餐图片保存在数据库中的图片名称
public static final String SETMEAL_PIC_DB_RESOURCES = "setmealPicDbResources";
public void clearImage() {
//计算差值A,B两个集合 差值代表A-B 属于A且不属于B所构成的集合
Set<String> set = jedisPool.getResource().sdiff(RedisConstant.SETMEAL_PIC_RESOURCES, RedisConstant.SETMEAL_PIC_DB_RESOURCES);
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String forName = iterator.next();
//删除七牛云上面的垃圾图片
QiniuUtils.deleteFileFromQiniu(forName);
System.out.println("清理了:" + forName);
//redis中的也要删除
jedisPool.getResource().srem(RedisConstant.SETMEAL_PIC_RESOURCES, forName);
}
}