minio缓存

This commit is contained in:
litianxiang
2026-05-20 15:09:26 +08:00
parent d700f94f9d
commit 921d2d956e

View File

@@ -52,6 +52,18 @@ public class MinioUtil {
return minioClient;
}
@Autowired
private RedisUtil redisUtil;
/**
* Redis缓存key前缀用于Minio签名URL缓存
*/
private static final String REDIS_MINIO_URL_PREFIX = "minio:url:";
/**
* 签名URL缓存过期时间默认1天
*/
private static final long URL_CACHE_EXPIRE_SECONDS = 24 * 60 * 60;
/**
* description: 判断bucket是否存在不存在则创建
*
@@ -392,6 +404,11 @@ public class MinioUtil {
* @return 文件的临时URL如果出现异常则返回null
*/
public String getPreSignedUrl(String bucketName, String fileName, int expiry) {
String cacheKey = REDIS_MINIO_URL_PREFIX + bucketName + "/" + fileName;
Object cachedUrl = redisUtil.getFromString(cacheKey);
if (cachedUrl != null) {
return cachedUrl.toString();
}
try {
String lowerName = fileName.toLowerCase();
@@ -419,8 +436,9 @@ public class MinioUtil {
builder.extraQueryParams(queryParams);
}
return minioClient.getPresignedObjectUrl(builder.build());
String presignedObjectUrl = minioClient.getPresignedObjectUrl(builder.build());
redisUtil.addToString(cacheKey, presignedObjectUrl, URL_CACHE_EXPIRE_SECONDS);
return presignedObjectUrl;
} catch (MinioException | InvalidKeyException
| IOException | NoSuchAlgorithmException | IllegalArgumentException e) {
e.printStackTrace();