# emr3cache **Repository Path**: neixunbao/emr3cache ## Basic Information - **Project Name**: emr3cache - **Description**: ehcache,memcache,redis集合工具.三种缓存配合可以配置ehcache/memcache为一级缓存,redis为2级缓存。或者只使用其中的一种作为缓存。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 2 - **Created**: 2016-04-25 - **Last Updated**: 2024-02-21 ## Categories & Tags **Categories**: cache-modules **Tags**: None ## README emr3Cache —— 基于 Ehcache 、memcache和 Redis 实现的两级 Java 缓存框架 ======================emr3Cache两级缓存结构====================== 1. L1: 进程内缓存(ehcache) ,也可1级使用Memcached,Redis,大多数项目的用法 2. L2: 集中式缓存,支持多种集中式缓存服务器,如 Redis、Memcached 等(Mem不支持删除2级时通知1级集群,单机不存在此问题) 3. 由于大量的缓存读取会导致 L2 的网络带宽成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数 L1过期时不通知L2删除,L2手动删除时,通知其他L1进行删除操作。 ==========key存储方式============ 以下两个方法为例: 1. set(region,key,value) 2. set(key,value) . 为了一个memcache、redis服务器,多个小型项目公用,key前缀添加namespace . region:为模块,key:键,value:值 . memcache 时key=>"namespace:region:key",region不设置时key=>"namespace:key" . redis,region不为空时存HASH: (“namespace:region”,“key”),region空时存String,key=>"namespace:key" ====================数据读取方法======================== 1. 读取顺序 -> L1 -> L2 -> DB 2. 数据更新 1 从数据库中读取最新数据,依次更新 L1_1 -> L2 ,广播(定时)清除某个缓存信息 3.可指定读取的级别L1 or L2 4.可指定设定值的级别 L1 OR L2 5.ehcache有效期是在xml中配置,所以提供的可以设置时间的实现方法会忽略时间,设置无效。 默认操作不设置时间时有效期为30分钟,配置文件中可以修改 ========================配置文件======================== 配置文件位于 src/main/resources 目录下,包含三个文件: * ehcache.xml ,Ehcache 的配置文件,配置说明请参考 Ehcache 文档 * java2cache.properties 核心配置文件,可配置 Redis 服务器、连接池,memcache服务器连接信息 实际使用过程需要将这二个文件复制到应用类路径中,如 WEB-INF/classes 目录。 ======================使用 Maven 构建================= $ mvn install ## 示例代码 test/TestCacheSub.java 单独订阅,发布测试:TjedisPub.java TjedisSub.java