zoukankan      html  css  js  c++  java
  • api-gateway-engine知识点(2)

    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<String, ConcurrentHashMap<String, String>> cache = new ConcurrentHashMap<String, ConcurrentHashMap<String, String>>();

    private GroupVersionCache() {

    }

    // 初始化redis中的Frtkey到本地cache中
    public static void initCache() throws Exception {
    Jedis jedis = RedisConnectionPool.getConnection();
    try {
    Set<String> keys = jedis.keys("API:GrpVer:*");
    for (String key : keys) {
    ConcurrentHashMap<String, String> concurrentHashMap = new ConcurrentHashMap<>();
    Map<String, String> 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<String, String> 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<String, String> map) throws Exception {
    try {
    ConcurrentHashMap<String, String> 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也可以吧?

  • 相关阅读:
    51单片机串口实验时波特率怎么调才合适
    什么是GPS的冷启动、温启动和热启动?
    单片机pc指针
    80C51存储器与C51内存优化
    C51变量的存储
    单片机结构体内存的分配
    单片机内程序运行的时候ram空间是如何分配的?
    51单片机存储器结构
    AD分辨率和精度区别
    过采样与欠采样
  • 原文地址:https://www.cnblogs.com/myfrank/p/7800745.html
Copyright © 2011-2022 走看看