基于内存和 Redis 的两级 Java 缓存框架!

2022-12-31 0 497

Java 三级缓存架构,能让应用领域全力支持三级缓存架构 ehcache(Caffeine)+ redis 。防止全然采用分立缓存控制系统所增添的互联网IO开支难题

如前所述缓存和 Redis 的三级 Java 缓存框架

J2Cache 第三级缓存采用缓存(与此同时全力支持 Ehcache 2.x、Ehcache 3.x 和 Caffeine),第三级缓存采用 Redis(所推荐)/Memcached 。虽然大批的缓存加载会导致 L2的互联网正式成为整座控制系统的困局,因而 L1的最终目标是减少对 L2的加载单次。该缓存架构主要就用作软件产业自然环境中。FPS也可采用,用作防止应用领域重新启动引致的缓存UAC后对后端销售业务的压制。

J2Cache 的三级缓存结构

L1:民主化内缓存(caffeine\ehcache) L2:Redis/Memcached 封闭式缓存

统计数据加载

加载次序-> L1-> L2-> DB统计数据预览1从统计资料库中加载新一代统计数据,依序预览 L1-> L2,推送该台去除某一缓存重要信息2 转交到该台(纯手工去除缓存&二级缓存手动失灵),从 L1中去除选定的缓存重要信息

J2Cache 实用性

命令行坐落于 core/resources 产品目录下,包涵四个文档:

j2cache.properties J2Cache 核心理念命令行,可实用性三级的缓存,Redis 伺服器、连接池和缓存该台的形式caffeine.properties 假如二级缓存换用 Caffeine ,所以该文档用以实用性缓存重要信息ehcache.xml Ehcache 的命令行,实用性表明请参照 Ehcache 文档格式ehcache3.xml Ehcache3的命令行,实用性表明请参照 Ehcache 文档格式network.xml JGroups 互联网实用性,假如采用 JGroups 多播不然须要那个文档,通常无须修正

前述采用操作过程须要将所需的命令行导入到应用领域类方向中,如 WEB-INF/classes 产品目录。

J2Cache 运转而所需 jar 包请查阅 core/pom.xml

术语表

安装 Redis git clone https://gitee.com/ld/J2Cache修正 core/resource/j2cache.properties 实用性采用已安装的 Redis 伺服器在命令行中执行 mvn package -DskipTests=true 进行项目编译打开多个命令行窗口,与此同时运转 runtest.sh在>提示符后输入 help 查阅命令,并进行测试

采用方法

J2Cache 默认采用 Caffeine 作为二级缓存,采用 Redis 作为二级缓存。你还能选择 Ehcache2和 Ehcache3作为二级缓存。

准备工作

安装 Redis新建一个如前所述 Maven 的 Java 项目

一.引用 Maven

net.oschina.j2cachej2cache-corexxxxx

中央仓库地址:>>飞机

二.准备实用性

拷贝 j2cache.properties 和 caffeine.properties 到你项目的源码产品目录,并确保这些文档会被编译到项目的 classpath 中。如果你选择了 ehcache 作为二级缓存,须要拷贝 ehcache.xml 或者 ehcache3.xml 到源码产品目录(后者对应的是 Ehcache 3.x 版本),这些命令行的模板能从 http

采用你喜欢的文本编辑器打开 j2cache.properties 并找到 redis.hosts 项,将其重要信息改成你的 Redis 伺服器所在的地址和端口。

我们建议缓存在采用之前都须要预先设定好缓存大小及有效时间,采用文本编辑器打开 caffeine.properties 进行缓存实用性,实用性方法请参照文档中的注释内容。

例如:default =1000,30m #定义缓存名 default ,对象大小1000,软件程序有效时间30分钟。你能定义多个不同名称的缓存。

三.编写代码

Test.java

publicstaticvoidmain(String[] args){ CacheChannel cache = J2Cache.getChannel();//缓存操作 cache.set(“default”,”1″,”Hello J2Cache”); System.out.println(cache.get(“default”,”1″)); cache.evict(“default”,”1″); System.out.println(cache.get(“default”,”1″)); cache.close();}

编译并运转查阅结果,更多的用法请参照 CacheChannel.java 接口的方法。

请注意 cache.close()方法只需在程序退出时调用。

四.动态构建 J2Cache 实例

J2CacheConfig config = new J2CacheConfig();//填充 config 变量所需的实用性重要信息J2CacheBuilder builder = J2CacheBuilder.init(config);CacheChannel channel = builder.getChannel();//进行缓存的操作channel.close();

五.软件产业测试

为了方便测试软件产业模式下 J2Cache 的运转,我们提供了一个命令行小程序,请参照此页面前面的“测试方法”。

常见难题

J2Cache 的采用场景是什么?首先你的应用领域是运转在软件产业自然环境,采用 J2Cache 能有效减少节点间的统计数据传输量;其次单节点采用 J2Cache 能防止应用领域重新启动后对后端销售业务控制系统的压制为什么不能在程序中设置缓存的有效期在程序中定义软件程序的有效期会引致缓存不可控,一旦统计数据出难题无从查起,因而 J2Cache 的所有缓存的有效期都必须在二级缓存的实用性中预设好再采用如何采用 JGroups 多播形式(无法在云主机中采用)首先修正 j2cache.properties 中的 j2cache.broadcast 值为 jgroups,然后在 maven 中引入org.jgroupsjgroups3.6.13.Final如何采用 ehcache 作为二级缓存首先修正 j2cache.properties 中的 j2cache.L1.providerclass 为 ehcache 或者 ehcache3,然后拷贝 ehcache.xml 或者 ehcache3.xml 到类方向,并实用性好缓存,须要在项目中引入对 ehcache 的全力支持:net.sf.ehcacheehcache2.10.4org.ehcacheehcache3.4.0如何采用 RabbitMQ 作为消息通知首先修正 j2cache.properties 中的 j2cache.broadcast 为 rabbitmq,然后在 j2cache.properties 中实用性 rabbitmq.xxx 相关重要信息。须要在项目中引入对 rabbitmq 的全力支持:com.rabbitmqamqp-client5.3.0如何采用 RocketMQ 作为消息通知首先修正 j2cache.properties 中的 j2cache.broadcast 为 rocketmq,然后在 j2cache.properties 中实用性 rocketmq.xxx 相关重要信息。须要在项目中引入对 rabbitmq 的全力支持:org.apache.rocketmqrocketmq-client4.3.0provided如何采用 memcached 作为二级缓存首先修正 j2cache.properties 中的 j2cache.L2.providerclass 为 memcached,然后在 j2cache.properties 中实用性 memcached.xxx 相关重要信息。须要在项目中引入对 memcached 的全力支持:com.googlecode.xmemcachedxmemcached2.4.5为什么 J2Cache 初始化时,连接本机的 Redis 非常慢,要5 秒以上?假如出现这种情况,请在控制系统 hosts 里实用性机器名和IP地址的对应关系,例如:127.0.0.1localhost127.0.0.1winter-notebook.local::1localhost::1winter-notebook.local采用何种 Redis 的存储模式最佳?generic 还是 hash ?我们所推荐采用 generic 存储模式,这也是 J2Cache 默认的存储模式,hash 模式最大的难题是无法单独对 key 进行 expire 设置。撸Java源码纯 Java 源码分享公众号,目前有DubboSpringCloudJava 并发RocketMQSharding-JDBCMyCATElastic-JobSkyWalkingSpring等等公众号

项目地址

github地址:https://gitee.com/ld/J2Cache

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务