You've already forked FrameTour-BE
各种sql、缓存优化
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
package com.ycwl.basic.repository;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.ycwl.basic.mapper.RenderWorkerMapper;
|
||||
import com.ycwl.basic.model.pc.renderWorker.entity.RenderWorkerEntity;
|
||||
import com.ycwl.basic.model.task.req.ClientStatusReqVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Component
|
||||
public class RenderWorkerRepository {
|
||||
@Autowired
|
||||
private RedisTemplate<String, String> redisTemplate;
|
||||
public static final String RENDER_WORKER_CACHE_KEY = "render_worker:%s";
|
||||
public static final String RENDER_WORKER_STATUS_CACHE_KEY = "render_worker:host_status:%s";
|
||||
@Autowired
|
||||
private RenderWorkerMapper mapper;
|
||||
|
||||
public RenderWorkerEntity getWorkerByAccessKey(String accessKey) {
|
||||
String key = String.format(RENDER_WORKER_CACHE_KEY, accessKey);
|
||||
if (redisTemplate.hasKey(key)) {
|
||||
return JSONObject.parseObject(redisTemplate.opsForValue().get(key), RenderWorkerEntity.class);
|
||||
}
|
||||
RenderWorkerEntity renderWorker = mapper.findByAccessKey(accessKey);
|
||||
if (renderWorker != null) {
|
||||
redisTemplate.opsForValue().set(key, JSONObject.toJSONString(renderWorker), 1, TimeUnit.HOURS);
|
||||
redisTemplate.opsForValue().set(String.format(RENDER_WORKER_CACHE_KEY, renderWorker.getId()), JSONObject.toJSONString(renderWorker), 1, TimeUnit.HOURS);
|
||||
}
|
||||
return renderWorker;
|
||||
}
|
||||
|
||||
public RenderWorkerEntity getWorker(Long id) {
|
||||
String key = String.format(RENDER_WORKER_CACHE_KEY, id);
|
||||
if (redisTemplate.hasKey(key)) {
|
||||
return JSONObject.parseObject(redisTemplate.opsForValue().get(key), RenderWorkerEntity.class);
|
||||
}
|
||||
RenderWorkerEntity renderWorker = mapper.getById(id);
|
||||
if (renderWorker != null) {
|
||||
redisTemplate.opsForValue().set(key, JSONObject.toJSONString(renderWorker), 1, TimeUnit.HOURS);
|
||||
redisTemplate.opsForValue().set(String.format(RENDER_WORKER_CACHE_KEY, renderWorker.getAccessKey()), JSONObject.toJSONString(renderWorker), 1, TimeUnit.HOURS);
|
||||
}
|
||||
return renderWorker;
|
||||
}
|
||||
|
||||
public void setWorkerHostStatus(Long id, ClientStatusReqVo status) {
|
||||
String key = String.format(RENDER_WORKER_STATUS_CACHE_KEY, id);
|
||||
if (status == null) {
|
||||
return;
|
||||
}
|
||||
status.setUpdateAt(new Date());
|
||||
redisTemplate.opsForValue().set(key, JSONObject.toJSONString(status), 1, TimeUnit.HOURS);
|
||||
}
|
||||
|
||||
public ClientStatusReqVo getWorkerHostStatus(Long id) {
|
||||
String key = String.format(RENDER_WORKER_STATUS_CACHE_KEY, id);
|
||||
if (redisTemplate.hasKey(key)) {
|
||||
String status = redisTemplate.opsForValue().get(key);
|
||||
return JSONObject.parseObject(status, ClientStatusReqVo.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void clearCache(Long id) {
|
||||
RenderWorkerEntity worker = getWorker(id);
|
||||
redisTemplate.delete(String.format(RENDER_WORKER_CACHE_KEY, id));
|
||||
if (worker != null) {
|
||||
redisTemplate.delete(String.format(RENDER_WORKER_CACHE_KEY, worker.getAccessKey()));
|
||||
}
|
||||
redisTemplate.delete(String.format(RENDER_WORKER_STATUS_CACHE_KEY, id));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user