基于内存和RedisJ2Cache是??OSChina目前使用的二级缓存框架(至少需要Java8)。一级缓存使用内存(同时支持Ehcache2.x、Ehcache3.x和Caffeine),二级缓存使用Redis(推荐)/Memcached。L1的目标是减少对L2的读取次数,因为大量的缓存读取会导致L2网络成为整个系统的瓶颈。该缓存框架主要用于集群环境。也可以在单机上使用,避免应用重启导致缓存冷启动后对后端业务的影响。J2Cache已有Python语言版本,详情请看https://gitee.com/ld/Py3Cache视频介绍:http://v.youku.com/v_show/id_XNzAzMTY5MjUy.htmlJ2Cache的二级缓存结构L1:进程内cache(caffeineehcache)L2:Redis/Memcached集中缓存数据读取readorder->L1->L2->DBdataupdate从数据库中读取***数据,依次更新L1->L2,发送广播清空某个缓存信息接收广播(手动清除缓存&一级缓存自动失效),从L1中清除指定的缓存信息。J2Cache配置文件位于core/resources目录下,包含三个文件:j2cache.propertiesJ2Cache核心配置文件可以配置二级缓存、Redis服务器、连接池、缓存广播caffeine.properties如果选择Caffeine一级缓存,那么这个文件就是用来配置缓存信息的ehcache.xmlEhcache的配置文件。配置说明请参考Ehcache文档ehcache3。xmlEhcache3配置文件,配置说明请参考Ehcache文档network.xml。JGroups网络配置,如果使用JGroups组播,需要这个文件,实际使用过程中一般不需要修改,需要将需要的配置文件复制到应用类路径下,比如WEB-INF/classes目录下。请检查J2Cache运行时所需的jar包。检查core/pom.xml测试方法安装Redisgitclonehttps://gitee.com/ld/J2Cache修改core/resource/j2cache.properties配置在命令行使用安装好的Redisserver执行mvnpackage-DskipTests=true编译项目打开多个命令行窗口同时运行runtest.sh在>提示符下输入help查看命令并测试使用J2Cache默认使用Caffeine作为一级缓存,Redis作为二级缓存级别缓存。也可以选择Ehcache2和Ehcache3作为一级缓存。准备工作安装Redis基于Maven新建Java项目1.参考Mavennet.oschina.j2cachej2cache-corexxxxx中央仓库地址:https://mvnrepository.com/artifact/net.oschina.j2cache/j2cache-core2.准备工作配置将j2cache.properties和caffeine.properties复制到项目的源目录中,并确保将这些文件编译到项目的类路径中。如果选择ehcache作为一级缓存,需要将ehcache.xml或ehcache3.xml复制到源码目录下(后者对应Ehcache3.x版本),这些配置文件的模板可以从https下载可以在这里获取://gitee.com/ld/J2Cache/tree/master/core/resources。使用您喜欢的文本编辑器打开j2cache.properties并找到redis.hosts项,并将其信息更改为您的Redis服务器所在的地址和端口。建议在使用缓存前提前设置好缓存大小和有效时间。使用文本编辑器打开caffeine.properties来配置缓存。配置方法请参考文件中的注释。例如:default=1000,30m#定义缓存名称default,对象大小为1000,缓存数据有效期为30分钟。您可以定义多个具有不同名称的缓存。3.编写代码Test.javapublicstaticvoidmain(String[]args){CacheChannelcache=J2Cache.getChannel();//缓存操作cache.set("default","1","HelloJ2Cache");System.out.println(cache.get("default","1"));cache.evict("default","1");System.out.println(cache.get("default","1"));cache.close();}编译运行查看结果。更多用法请参考CacheChannel.java接口的方法。注意cache.close()方法只需要在程序退出时调用。4.动态构建J2Cache实例J2CacheConfigconfig=newJ2CacheConfig();//填写config变量需要的配置信息J2CacheBuilderbuilder=J2CacheBuilder.init(config);CacheChannelchannel=builder.getChannel();//缓存操作channel.close();五、集群测试为了测试J2Cache在集群模式下的运行,我们提供了一个命令行小程序,请参考本页前面的“测试方法”。FAQ1.J2Cache的使用场景是什么?首先,您的应用程序运行在集群环境中。使用J2Cache可以有效减少节点间的数据传输量;其次,在单节点使用J2Cache可以避免应用重启后对后端业务系统的影响。.2、为什么不能在程序中设置缓存的有效期?在程序中定义缓存数据的有效期会导致缓存不可控。一旦数据出现问题,就没有办法查了。所以必须在一级缓存的配置中预先设置所有J2Cache缓存的有效期。设置并使用它。3.如何使用JGroups组播方式(不能在云主机中使用)先修改j2cache.properties中j2cache.broadcast的值为jgroups,然后在中引入
