zoukankan      html  css  js  c++  java
  • DataCache 批量的好方法

    实例

    public class HbaseDataCache2Db {
        private static Logger LOG = LoggerFactory.getLogger(HbaseDataCache2Db.class);
        private static ThreadLocal<Map<String, List<Put>>> THREAD_DATA = new ThreadLocal<>();
    
        public static void cacheData(String key, Put put) {
            Map<String, List<Put>> cacheMap = THREAD_DATA.get();
            if (cacheMap == null) {
                cacheMap = new HashMap<>();
            }
            List<Put> tmp = cacheMap.get(key);
            if (tmp == null) {
                tmp = new ArrayList<>();
            }
            tmp.add(put);
            cacheMap.put(key, tmp);
            THREAD_DATA.set(cacheMap);
        }
    
        public static void flushData() {
            try {
                Map<String, List<Put>> cacheMap = THREAD_DATA.get();
                if (cacheMap == null) {
                    return;
                }
                for (String tableName : cacheMap.keySet()) {
                    HbaseUtil.putData(tableName, cacheMap.get(tableName));
                }
                cacheMap.clear();
                THREAD_DATA.set(cacheMap);
            } catch (Exception e) {
                LOG.error("Hbase 数据写入异常:", e);
            }
        }
    
    
        public static void cacheData(Map<String, List<Put>> cacheMap, String key, Put put) {
            List<Put> tmp = cacheMap.get(key);
            if (tmp == null) {
                tmp = new ArrayList<>();
            }
            tmp.add(put);
            cacheMap.put(key, tmp);
        }
    
        public static void flushData(Map<String, List<Put>> cacheMap) {
            try {
                for (String tableName : cacheMap.keySet()) {
                    HbaseUtil.putData(tableName, cacheMap.get(tableName));
                }
            } catch (Exception e) {
                LOG.error("Hbase 数据写入异常:", e);
            }
        }
    }

    采用了map k,v 的方法

    public class MysqlDataCache2Db {
        private static Logger LOG = LoggerFactory.getLogger(MysqlDataCache2Db.class);
        private static ThreadLocal<Map<String, List<Object>>> THREAD_DATA = new ThreadLocal<>();
        public static String KEY_WX = "wx_base_info";
        public static String KEY_WX_ARTICLE = "wx_article_info";
    
        public static void cacheData(String key, Object obj) {
            Map<String, List<Object>> cacheMap = THREAD_DATA.get();
            if (cacheMap == null) {
                cacheMap = new HashMap<>();
            }
            List<Object> tmp = cacheMap.get(key);
            if (tmp == null) {
                tmp = new ArrayList<>();
            }
            tmp.add(obj);
            cacheMap.put(key, tmp);
            THREAD_DATA.set(cacheMap);
        }
    
    
        public static void flushData() {
            try {
                Map<String, List<Object>> cacheMap = THREAD_DATA.get();
                if (cacheMap == null) {
                    return;
                }
                for (String tableName : cacheMap.keySet()) {
                    List<Object> tmpList = cacheMap.get(tableName);
                    SqlUtilBusiness.data2DB(tableName, tmpList);
                    String sql = "update " + tableName + " set deptCode=cityCode where deptCode='' OR deptCode is null";
                    SqlUtilBusiness.exceteSql(sql);
                }
                cacheMap.clear();
                THREAD_DATA.set(cacheMap);
            } catch (Exception e) {
                LOG.error("MYSQL 数据写入异常:", e);
            }
        }
    
       public static void cacheData(Map<String, List<Object>> cacheMap, String key, Object obj) {
            List<Object> tmp = cacheMap.get(key);
            if (tmp == null) {
                tmp = new ArrayList<>();
            }
            tmp.add(obj);
            cacheMap.put(key, tmp);
        }
    
        public static void flushData(Map<String, List<Object>> cacheMap) {
            try {
                for (String tableName : cacheMap.keySet()) {
                    List<Object> tmpList = cacheMap.get(tableName);
                    SqlUtilBusiness.data2DB(tableName, tmpList);
                    String sql = "update " + tableName + " set deptCode=cityCode where deptCode='' OR deptCode is null";
                    SqlUtilBusiness.exceteSql(sql);
                    cacheMap.clear();
                }
            } catch (Exception e) {
                LOG.error("MYSQL 数据写入异常:", e);
            }
        }
    }
    故乡明
  • 相关阅读:
    轻量级前端MVVM框架avalon
    Android开发:TextView添加超链接的简便方法
    那些年一起学过的面向对象之:4 面向对象的三大特征:封装、继承、多态
    iOS 如何创建单例对象
    phing用户手册第四章Getting Started译文
    C语言中scanf/fscanf 的%[]和%n说明符的使用方法
    listview改变选中行字体颜色
    oracle数据库单个数据文件的大小限制
    古堡算式
    java反射--注解的定义与运用以及权限拦截
  • 原文地址:https://www.cnblogs.com/luweiweicode/p/15151573.html
Copyright © 2011-2022 走看看