api-gateway-engine知识点(2)

2021-04-30 21:26

阅读:514

标签:shm   get   col   知识点   通过   getc   info   final   import   

GroupVersion实现engine本地缓存

package com.inspur.cloud.apigw.engine.cache;

import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;


import com.inspur.cloud.apigw.engine.common.RedisCachePrefix;
import com.inspur.cloud.apigw.engine.common.RedisConnectionPool;

import redis.clients.jedis.Jedis;

public class GroupVersionCache {

private static ConcurrentHashMap> cache = new ConcurrentHashMap>();

private GroupVersionCache() {

}

// 初始化redis中的Frtkey到本地cache中
public static void initCache() throws Exception {
Jedis jedis = RedisConnectionPool.getConnection();
try {
Set keys = jedis.keys("API:GrpVer:*");
for (String key : keys) {
ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap();
Map value = jedis.hgetAll(key);
concurrentHashMap.putAll(value);
cache.put(key, concurrentHashMap);
}
} catch (Exception e) {
throw e;
} finally {
jedis.close();
}
}

// 在本地缓存中,通过groupCode和versionCode获取VersionInfo
public static ConcurrentHashMap getVersionInfoByCache(String groupCode, String versionCode)
throws Exception {
try {
String grpVersionKey = RedisCachePrefix.getApiGrpVerKey(groupCode, versionCode);
return cache.get(grpVersionKey);
} catch (Exception e) {
throw e;
}
}

// 版本上线时,向engine本地中增加绑定关系缓存
public static void addVersionInfoToCache(String messageKey, Map map) throws Exception {
try {
ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap();
concurrentHashMap.putAll(map);
cache.put(messageKey, concurrentHashMap);
} catch (Exception e) {
throw e;
}
}

// 下线时,删除本地缓存中的某条数据
public static void deleteCacheBykey(String messageKey) throws Exception {
try {
cache.remove(messageKey);
} catch (Exception e) {
throw e;
}
}

}

 

 

为什么要用 conCurrentHashMap?Map或者HashMap也可以吧?

api-gateway-engine知识点(2)

标签:shm   get   col   知识点   通过   getc   info   final   import   

原文地址:http://www.cnblogs.com/myfrank/p/7800745.html


评论


亲,登录后才可以留言!