MyBatis与Memcached集成,MyBatis与Memcache集成后缓存数据不一致问题

1、 Memcache和Mybatis整合jar 下载: mybatis-memcached-1.0.0.jar

      官方网站:http://www.mybatis.org/memcached-cache/index.html

      maven项目添加: 

<!-- mybatis整合memcache -->
        <dependency>
            <groupId>org.mybatis.caches</groupId>
                <artifactId>mybatis-memcached</artifactId>
            <version>1.0.0</version>
        </dependency>

2、Mapper文件添加如下语句:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper        PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.xxx.dao.xxx" >
<cache type="org.mybatis.caches.memcached.LoggingMemcachedCache" />
  <resultMap id="xxx" type="com.xxx.xxx.xxx" >
    <id column="ID" property="id" jdbcType="BIGINT" />
  </resultMap>

配置方式分为有日志和无日志两种(自己测试两种方式打印的日志没区别,日志级别DEBUG):

无日志
<cache type=”org.mybatis.caches.memcached.MemcachedCache” />

有日志
<cache type=”org.mybatis.caches.memcached.LoggingMemcachedCache” />

3、classpath下新建memcached.properties文件,格式如下:

#any string identifier
org.mybatis.caches.memcached.keyprefix=_biz-cache-wk_
#space separated list of ${host}:${port}
org.mybatis.caches.memcached.servers=192.168.0.200:12000
#org.mybatis.caches.memcached.servers=192.168.0.44:12000
#Any class that implementsnet.spy.memcached.ConnectionFactory
org.mybatis.caches.memcached.connectionfactory=net.spy.memcached.DefaultConnectionFactory
#the number of seconds in 30 days    the expiration time (in seconds)
org.mybatis.caches.memcached.expiration=6000
#flag to enable/disable the async get
org.mybatis.caches.memcached.asyncget=false
#the timeout when using async get
org.mybatis.caches.memcached.timeout=5
#the timeout unit when using async get
org.mybatis.caches.memcached.timeoutunit=java.util.concurrent.TimeUnit.SECONDS
#if true, objects will be GZIP compressed before putting them to
org.mybatis.caches.memcached.compression=false

#\u7f13\u5b58\u670d\u52a1\u5668\u5b95\u673a\u540e\u591a\u4e45\u4e0d\u4f7f\u7528memcached \u6beb\u79d2\u4e3a\u5355\u4f4d
#refuse time when connection refused
org.mybatis.caches.memcached.refuseperiod=1000

配置参数说明:

Property Default Description
 org.mybatis.caches.memcached.keyprefix _mybatis_ 缓存key的前缀
 org.mybatis.caches.memcached.servers localhost:11211 memcache地址
 org.mybatis.caches.memcached.connectionfactory net.spy.memcached.DefaultConnectionFactory 只要实现接口net.spy.memcached.ConnectionFactory
 org.mybatis.caches.memcached.expiration 2592000(30天的秒数) 过期时间单位秒
 org.mybatis.caches.memcached.asyncget false 是否启用异步读
 org.mybatis.caches.memcached.timeout 5 使用异步读的timeout时间
 org.mybatis.caches.memcached.timeoutunit java.util.concurrent.TimeUnit.SECONDS  使用异步读的timeout时间单位
 org.mybatis.caches.memcached.compression false 如果开启,对象在放到memcache前会使用GZIP 压缩

 

源码存在并发量大缓存数据与数据库不一致问题,详情点击:MyBatis与Memcache集成后缓存数据不一致问题

 

    原文作者:memcached
    原文地址: https://www.cnblogs.com/wangjian1990/p/6731812.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞