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也可以吧?

  • 相关阅读:
    linux常用脚本
    shell学习笔记
    Linux常用命令List
    Centos7部署Zabbix
    centos7安装nagios步骤
    nagios报错HTTP WARNING: HTTP/1.1 403 Forbidden解决方法
    U盘安装CentOS7
    Thread线程控制之sleep、join、setDaemon方法的用处
    EfficientDet框架详解 | 目前最高最快最小模型,可扩缩且高效的目标检测(附源码下载)
    ubuntu18.04 安装多版本cuda ,原来版本为9.0,在新增8.0
  • 原文地址:https://www.cnblogs.com/myfrank/p/7800745.html
Copyright © 2011-2022 走看看