feat(cache): 添加渲染服务缓存清理功能

- 在模板更新、删除、发布和创建版本操作后清理模板相关缓存
- 在模板片段创建、更新、删除和替换操作后清理片段缓存
- 在工作器配置创建、更新、删除和批量更新操作后清理配置缓存
- 在工作器更新和删除操作后清理工作器缓存
- 新增模板和片段缓存清理辅助方法
- 新增工作器配置缓存清理辅助方法
This commit is contained in:
2026-02-13 12:06:22 +08:00
parent 1f302aefd6
commit 701d7879a8
3 changed files with 71 additions and 3 deletions

View File

@@ -88,6 +88,8 @@ public class RenderTemplateIntegrationService {
log.debug("更新渲染模板, id: {}, name: {}", id, request.getName());
CommonResponse<Void> response = renderTemplateV2Client.updateTemplate(id, request);
handleVoidResponse(response, "更新渲染模板失败");
// 清理模板相关缓存
clearTemplateCache(id);
}
/**
@@ -97,6 +99,8 @@ public class RenderTemplateIntegrationService {
log.debug("删除渲染模板, id: {}", id);
CommonResponse<Void> response = renderTemplateV2Client.deleteTemplate(id);
handleVoidResponse(response, "删除渲染模板失败");
// 清理模板相关缓存
clearTemplateCache(id);
}
// ==================== Template Operations ====================
@@ -108,6 +112,8 @@ public class RenderTemplateIntegrationService {
log.debug("发布渲染模板, id: {}", id);
CommonResponse<Void> response = renderTemplateV2Client.publishTemplate(id);
handleVoidResponse(response, "发布渲染模板失败");
// 清理模板相关缓存(发布会改变状态)
clearTemplateCache(id);
}
/**
@@ -116,7 +122,10 @@ public class RenderTemplateIntegrationService {
public TemplateV2DTO createTemplateVersion(Long id) {
log.debug("创建渲染模板新版本, id: {}", id);
CommonResponse<TemplateV2DTO> response = renderTemplateV2Client.createTemplateVersion(id);
return handleResponse(response, "创建渲染模板新版本失败");
TemplateV2DTO result = handleResponse(response, "创建渲染模板新版本失败");
// 清理模板相关缓存
clearTemplateCache(id);
return result;
}
// ==================== Segment Management ====================
@@ -146,7 +155,10 @@ public class RenderTemplateIntegrationService {
log.debug("创建模板片段, templateId: {}, segmentIndex: {}", templateId, request.getSegmentIndex());
CommonResponse<TemplateV2SegmentDTO> response =
renderTemplateV2Client.createSegment(templateId, request);
return handleResponse(response, "创建模板片段失败");
TemplateV2SegmentDTO result = handleResponse(response, "创建模板片段失败");
// 清理模板片段缓存
clearTemplateSegmentCache(templateId);
return result;
}
/**
@@ -157,6 +169,8 @@ public class RenderTemplateIntegrationService {
CommonResponse<Void> response =
renderTemplateV2Client.updateSegment(templateId, segmentId, request);
handleVoidResponse(response, "更新模板片段失败");
// 清理模板片段缓存
clearTemplateSegmentCache(templateId);
}
/**
@@ -166,6 +180,8 @@ public class RenderTemplateIntegrationService {
log.debug("删除模板片段, templateId: {}, segmentId: {}", templateId, segmentId);
CommonResponse<Void> response = renderTemplateV2Client.deleteSegment(templateId, segmentId);
handleVoidResponse(response, "删除模板片段失败");
// 清理模板片段缓存
clearTemplateSegmentCache(templateId);
}
/**
@@ -176,10 +192,29 @@ public class RenderTemplateIntegrationService {
templateId, request.getSegments() != null ? request.getSegments().size() : 0);
CommonResponse<Void> response = renderTemplateV2Client.replaceSegments(templateId, request);
handleVoidResponse(response, "替换所有模板片段失败");
// 清理模板及片段缓存
clearTemplateCache(templateId);
clearTemplateSegmentCache(templateId);
}
// ==================== Helper Methods ====================
/**
* 清理模板缓存
*/
private void clearTemplateCache(Long templateId) {
fallbackService.clearFallbackCache(SERVICE_NAME, "template:" + templateId);
fallbackService.clearFallbackCache(SERVICE_NAME, "template:with-segments:" + templateId);
}
/**
* 清理模板片段缓存
*/
private void clearTemplateSegmentCache(Long templateId) {
fallbackService.clearFallbackCache(SERVICE_NAME, "template:segments:" + templateId);
fallbackService.clearFallbackCache(SERVICE_NAME, "template:with-segments:" + templateId);
}
/**
* 处理通用响应
*/

View File

@@ -87,7 +87,10 @@ public class RenderWorkerConfigIntegrationService {
log.debug("创建渲染工作器配置, workerId: {}, configKey: {}", workerId, config.getConfigKey());
CommonResponse<RenderWorkerConfigV2DTO> response =
renderWorkerConfigV2Client.createWorkerConfig(workerId, config);
return handleResponse(response, "创建渲染工作器配置失败");
RenderWorkerConfigV2DTO result = handleResponse(response, "创建渲染工作器配置失败");
// 清理配置相关缓存
clearWorkerConfigCache(workerId, config.getConfigKey());
return result;
}
/**
@@ -98,6 +101,8 @@ public class RenderWorkerConfigIntegrationService {
CommonResponse<Void> response =
renderWorkerConfigV2Client.updateWorkerConfig(workerId, configId, updates);
handleVoidResponse(response, "更新渲染工作器配置失败");
// 清理所有配置缓存(无法确定具体key)
clearAllWorkerConfigCache(workerId);
}
/**
@@ -108,6 +113,8 @@ public class RenderWorkerConfigIntegrationService {
CommonResponse<Void> response =
renderWorkerConfigV2Client.deleteWorkerConfig(workerId, configId);
handleVoidResponse(response, "删除渲染工作器配置失败");
// 清理所有配置缓存(无法确定具体key)
clearAllWorkerConfigCache(workerId);
}
/**
@@ -119,6 +126,8 @@ public class RenderWorkerConfigIntegrationService {
CommonResponse<Void> response =
renderWorkerConfigV2Client.batchUpdateWorkerConfigs(workerId, request);
handleVoidResponse(response, "批量更新渲染工作器配置失败");
// 清理所有配置缓存
clearAllWorkerConfigCache(workerId);
}
/**
@@ -142,6 +151,26 @@ public class RenderWorkerConfigIntegrationService {
request.setConfigs(configs);
batchUpdateWorkerConfigs(workerId, request);
// 缓存清理已在 batchUpdateWorkerConfigs 中处理
}
/**
* 清理指定配置的缓存
*/
private void clearWorkerConfigCache(Long workerId, String configKey) {
fallbackService.clearFallbackCache(SERVICE_NAME, "worker:configs:" + workerId);
fallbackService.clearFallbackCache(SERVICE_NAME, "worker:flat:config:" + workerId);
if (configKey != null) {
fallbackService.clearFallbackCache(SERVICE_NAME, "worker:config:" + workerId + ":" + configKey);
}
}
/**
* 清理工作器所有配置缓存
*/
private void clearAllWorkerConfigCache(Long workerId) {
fallbackService.clearFallbackCache(SERVICE_NAME, "worker:configs:" + workerId);
fallbackService.clearFallbackCache(SERVICE_NAME, "worker:flat:config:" + workerId);
}
/**

View File

@@ -58,6 +58,8 @@ public class RenderWorkerIntegrationService {
log.debug("更新渲染工作器, id: {}, name: {}", id, request.getName());
CommonResponse<Void> response = renderWorkerV2Client.updateWorker(id, request);
handleVoidResponse(response, "更新渲染工作器失败");
// 清理工作器相关缓存
fallbackService.clearFallbackCache(SERVICE_NAME, "worker:" + id);
}
/**
@@ -67,6 +69,8 @@ public class RenderWorkerIntegrationService {
log.debug("删除渲染工作器, id: {}", id);
CommonResponse<Void> response = renderWorkerV2Client.deleteWorker(id);
handleVoidResponse(response, "删除渲染工作器失败");
// 清理工作器相关缓存
fallbackService.clearFallbackCache(SERVICE_NAME, "worker:" + id);
}
/**