Commit 78a49b35 authored by 黎博's avatar 黎博

获取repo列表增加redis缓存

parent 4aa78fb1
package cn.qg.holmes.service.k8s;
import cn.qg.holmes.utils.RedisUtils;
import com.alibaba.fastjson.JSON;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
......@@ -7,6 +8,7 @@ import com.tencentcloudapi.tcr.v20190924.TcrClient;
import com.tencentcloudapi.tcr.v20190924.models.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
......@@ -19,6 +21,9 @@ import java.util.*;
@Component
public class ImageService {
@Autowired
RedisUtils redisUtils;
private TcrClient tcrClient;
public ImageService() {
......@@ -53,11 +58,16 @@ public class ImageService {
}
/**
* 获取腾讯镜像仓库的镜像
* 获取腾讯镜像仓库的镜像, 做了redis缓存,缓存时间30分钟
* @param namespace qa-base, qa-java, qa-ui 等等
* @return
*/
public List<RepoInfo> getRepoInfoList(String namespace) {
String REPO_PREFIX = "k8s:repo:";
Object redisValue = redisUtils.get(REPO_PREFIX + namespace);
if (redisValue != null) {
return JSON.parseArray(redisValue.toString(), RepoInfo.class);
}
try {
DescribeRepositoryFilterPersonalRequest request = new DescribeRepositoryFilterPersonalRequest();
request.setNamespace(namespace);
......@@ -77,6 +87,7 @@ public class ImageService {
response = tcrClient.DescribeRepositoryFilterPersonal(request);
repoInfoList.addAll(Arrays.asList(response.getData().getRepoInfo()));
}
redisUtils.set(REPO_PREFIX + namespace, JSON.toJSONString(repoInfoList), 1800);
return repoInfoList;
} catch (Exception e) {
e.printStackTrace();
......
......@@ -38,8 +38,6 @@ public class K8sService {
private KubernetesClient kubernetesClient;
private final String NS_PREFIX = "namespace:";
public K8sService() {
try {
String configYAML = String.join("\n", readConfigFile("kube-config.yml"));
......@@ -120,6 +118,7 @@ public class K8sService {
*/
public List<Map> getNamespaceList(String env) {
// 首先从缓存获取
String NS_PREFIX = "k8s:namespace:";
Object redisValue = redisUtils.get(NS_PREFIX + env);
if (redisValue != null) {
return JSON.parseArray(redisValue.toString(), Map.class);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment