zoukankan      html  css  js  c++  java
  • Atitit mybatis 配置 redis 集成 attilax总结 艾提拉总结 1.1. setting name="cacheEnabled" v 1 1.2. Mapper文件 1 1.

    Atitit mybatis 配置 redis 集成 attilax总结 艾提拉总结

    1.1. setting name="cacheEnabled" v 1

    1.2. Mapper文件 1

    1.3. 使用与更新 ,默认select全部使用 2

    1.4. Redis gui 2

    1.5. MybatisCacheWzGuava 3

    1.6. 手动更新缓存 9

    2. 其他增强 9

    1.1. setting name="cacheEnabled" v

    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

    <configuration>

     

    <properties>

    <property name="dialect" value="POSTGRESQL" />

    <!-- <property name="dialect" value="SQLSERVER"/> -->

    </properties>

    <settings>

    <setting name="cacheEnabled" value="true" />

     

    1.2. Mapper文件

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    <mapper namespace="CliSendAdvice">

    <!--

    1800s  30min    MybatisRedisCache

    -->

    <cache   flushInterval="1800000" readOnly="true" size="102004" type="com.cnhis.cloudhealth.clinical.util.cache.MybatisCacheWzGuava"></cache>

        

     

    1.3. 使用与更新 ,默认select全部使用

    Select应该搞个白名单。。Update不需要,使用定期模式,因为他是根据mapper已有up操作 就清空缓存了意义不大。。

    1.4. Redis gui

    \xAC\xED\x00\x05t\x00p-1444578844:-590811772:CliSendAdvice.getParameter:0:2147483647:select GetSysParamValue(?,?,?) param:9999:9999:12

    这个hto d package mode is  : maohao ..busi  juhao ..

    1.5. MybatisCacheWzGuava

    package com.cnhis.cloudhealth.clinical.util.cache;

    import java.util.List;

    import java.util.Map;

    import java.util.concurrent.Callable;

    import java.util.concurrent.FutureTask;

    import java.util.concurrent.locks.ReadWriteLock;

    import java.util.concurrent.locks.ReentrantReadWriteLock;

    import org.apache.ibatis.cache.Cache;

    import org.slf4j.Logger;

    import org.slf4j.LoggerFactory;

    import com.cnhis.cloudhealth.clinical.util.AsynUtil_prjcli;

    import com.google.common.collect.Lists;

    import redis.clients.jedis.Jedis;

    import redis.clients.jedis.JedisPool;

    import redis.clients.jedis.JedisPoolConfig;

    //  com.cnhis.cloudhealth.clinical.util.cache.MybatisRedisCache

    public class MybatisRedisCache extends MybatisCacheAbs implements Cache {

    public static ThreadLocal<Jedis> ThreadLocal_jedis = new ThreadLocal<>();

    public static void main(String[] args) {

    }

    public static String host = "192.168.1.18";

    private static Logger logger = LoggerFactory.getLogger(MybatisRedisCache.class);

    public static Jedis redisClient; // = createReids();

    private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();

    private String id;

    public MybatisRedisCache(final String id) {

    if (id == null) {

    throw new IllegalArgumentException("Cache instances require an ID");

    }

    logger.debug(">>>>>>>>>>>>>>>>>>>>>>>>MybatisRedisCache:id=" + id);

    this.id = id;

    }

    public MybatisRedisCache() {

    // TODO Auto-generated constructor stub

    }

    @Override

    public String getId() {

    return this.id;

    }

    @Override

    public int getSize() {

    Jedis Jedis1 = createReids();

    return Integer.valueOf(Jedis1.dbSize().toString());

    }

    public static ThreadLocal<Object> curkey = new ThreadLocal<>();

    /**

     * value arraylist

     */

    @Override

    public void putObject(Object key, Object value) {

    // Object curkey= MybatisRedisCache.curkey.get();

    String string_curkey = key.toString().toLowerCase();

    if (string_curkey.contains("tmp") || string_curkey.contains("temp") || string_curkey.contains("count")

    || string_curkey.contains("insert") || string_curkey.contains("update")

    || string_curkey.contains("delete") || string_curkey.contains("drop")

    || string_curkey.contains("exist"))

    return;

    try {

    logger.debug(">>>>>>>>>>>>>>>>>>>>>>>>putObject key:" + key + "        ,val:" + value);

    if (key == null)

    return;

    Jedis Jedis1 = getReids();

    byte[] serialize_key = SerializeUtil_prjcli_pkgcache.serialize(key.toString());

    Jedis1.set(serialize_key, SerializeUtil_prjcli_pkgcache.serialize(value));

    try {

    Jedis1.expire(serialize_key, 300); // def 5min

    } catch (Exception e) {

    logger.error(" mybatisredis cache.Jedis1.expire(serialize_key, 300) ", e);

    }

    } catch (Exception e) {

    logger.error(" mybatisredis cache.putObject ", e);

    e.printStackTrace();

    }

    }

    @Override

    public Object getObject(Object key) {

    String whiteList="";

    String blackList="tmp,temp,count,insert,update,delete,drop,exist";

    String string_curkey = key.toString().toLowerCase();

    if (string_curkey.contains("tmp") || string_curkey.contains("temp") || string_curkey.contains("count")

    || string_curkey.contains("insert") || string_curkey.contains("update")

    || string_curkey.contains("delete") || string_curkey.contains("drop")

    || string_curkey.contains("exist"))

    return null;

    curkey.set(key);

    logger.debug(">>>>>>>>>>>>>>>>>>>>>>>>getObject key:" + key);

    Jedis Jedis1 = getReids();

    try {

    byte[] key2 = SerializeUtil_prjcli_pkgcache.serialize(key.toString());

    System.out.println("--");

    byte[] bytes = Jedis1.get(key2);

    if (bytes == null)

    return null;

    Object value = SerializeUtil_prjcli_pkgcache.unserialize(bytes);

    logger.debug(">>>>>>>>>>>>>>>>>>>>>>>>getObject key:" + key + "   ,val:" + value);

    return value;

    } catch (Exception e) {

    logger.error(" mybatisredis cache.getObject ", e);

    e.printStackTrace();

    }

    return null;

    }

    @Override

    public Object removeObject(Object key) {

    // Jedis Jedis1= createReids();

    // return

    // Jedis1.expire(SerializeUtil_prjcli_pkgcache.serialize(key.toString()),

    // 0);

    return 0;

    }

    @Override

    public void clear() {

    try {

    // Redis Flushdb 命令用于清空当前数据库中的所有 key

    // redisClient.flushDB();

    System.out.println("");

    } catch (Exception e) {

    logger.error(" mybatisredis cache.clear ", e);

    e.printStackTrace();

    }

    }

    @Override

    public ReadWriteLock getReadWriteLock() {

    return readWriteLock;

    }

    protected Jedis createReids() {

    /**

     * Jedis jedis = new Jedis("192.168.1.18"); jedis.auth("cnhis");//

     * password return jedis;

     */

    // JedisPool pool = new JedisPool(host, 6379);

    /*

     *

     * */

    // JedisPoolConfig config = new JedisPoolConfig();

    // config.setMaxActive(500);

    // config.setMaxIdle(1000);

    // config.setMaxWait(1000);

    // String AUTH="cnhis";

    // config.setTestOnBorrow(true);config.setTestOnReturn(true);

    // JedisPool JedisPool1 = new JedisPool(config, host, 6379, 5000, AUTH);

    // return JedisPool1.getResource();

    Jedis jedis = new Jedis("192.168.1.18");

    jedis.auth("cnhis");// password

    jedis.select(2);

    redisClient = jedis;

    return jedis;

    }

    public void putObjectByThrdlocalCurKey_AsynProxy(final String key_valideTag, final Object param_shouldbelist) {

    final Object curkey1 = MybatisRedisCache.curkey.get();

    AsynUtil_prjcli.execMeth_Async(new FutureTask<>(new Callable() {

    @Override

    public Object call() throws Exception {

    putObjectByThrdlocalCurKey(key_valideTag, curkey1, param_shouldbelist);

    return null;

    }

    }), "threadName");

    }

    /**

     *

     * @param param_shouldbelist

     * @param m

     * @param parameter

     */

    synchronized public void putObjectByThrdlocalCurKey(String key_valideTag, Object curkey1,

    Object param_shouldbelist) {

    Object curkey = MybatisRedisCache.curkey.get();

    if (curkey1 == null)

    return;

    if (curkey1.toString().contains("getBCK01A"))

    System.out.println("dbg");

    if (key_valideTag.length() > 0)

    if (!curkey1.toString().toLowerCase().contains(key_valideTag.toLowerCase().trim()))

    return;

    String string_curkey = curkey1.toString().toLowerCase();

    if (string_curkey.contains("tmp") || string_curkey.contains("temp") || string_curkey.contains("count")

    || string_curkey.contains("insert") || string_curkey.contains("update")

    || string_curkey.contains("delete") || string_curkey.contains("drop")

    || string_curkey.contains("exist"))

    return;

    if (param_shouldbelist == null)

    return;

    List param_list = Lists.newArrayList();

    if (param_shouldbelist instanceof List) // map

    {

    } else

    param_list.add(param_shouldbelist);

    byte[] key2 = SerializeUtil_prjcli_pkgcache.serialize(string_curkey);

    Jedis Jedis1 = getReids();

    if (!Jedis1.exists(key2))

    putObject(curkey1, param_list);

    MybatisRedisCache.curkey.set(null);

    }

    private Jedis getReids() {

    if (ThreadLocal_jedis.get() == null) {

    Jedis redisClient = createReids();

    ThreadLocal_jedis.set(redisClient);

    }

    return ThreadLocal_jedis.get();

    }

    }

    1.6. 手动更新缓存

     String parameter = cliSendAdviceDao.getParameter(map);

          //ati set cache

           

            MybatisCacheAbs1.putObjectByThrdlocalCurKey_AsynProxy("getParameter",parameter);

           // new MybatisRedisCache().putObjectByThrdlocalCurKey("getParameter",parameter);

            //end set cache finish

     

     

    2. 其他增强

  • 相关阅读:
    MySQL数据库高并发优化配置
    MySQL性能参数详解
    jQuery中过滤选择器first和first-child的区别
    Linux非常用命令
    jps命令学习
    通过乐观锁(版本号)降低并发时的锁竞争
    ReentrantLock 相关学习笔记
    grep 所有多个关键字
    ThreadLocal学习笔记
    Idea设置全白色 背景
  • 原文地址:https://www.cnblogs.com/attilax/p/15197654.html
Copyright © 2011-2022 走看看