J2Cache
1.使用方法
安装 Redis
新建一个基于 Maven 的 Java 项目
引用 Maven
准备配置
- j2cache.properties
- caffeine.properties
编写代码
- CacheChannel cache = J2Cache.getChannel()
动态构建 J2Cache 实例
- CacheChannel channel =J2CacheBuilder.init(new J2CacheConfig()).getChannel()
集群测试
数据读取
-
读取顺序 -> L1 -> L2 -> DB
-
数据更新
- 从数据库中读取最新数据,依次更新 L1 -> L2 ,发送广播清除某个缓存信息
- 接收到广播(手工清除缓存 & 一级缓存自动失效),从 L1 中清除指定的缓存信息
2.常见问题
J2Cache 的使用场景是什么?
- 集群环境,使用 J2Cache 可以有效降低节点间的数据传输量
- 单节点使用 J2Cache 可以避免应用重启后对后端业务系统的冲击
为什么不能在程序中设置缓存的有效期
- 程序中定义缓存数据的有效期会导致缓存不可控,一旦数据出问题无从查起,因此 J2Cache 的所有缓存的有效期都必须在 一级缓存 的配置中预设好再使用
如何使用 JGroups 组播方式(无法在云主机中使用)
- 首先修改 j2cache.properties 中的 j2cache.broadcast 值为 jgroups
- 然后在 maven 中引入jgroups
如何使用 ehcache 作为一级缓存
- 首先修改 j2cache.properties 中的 j2cache.L1.provider_class 为 ehcache 或者 ehcache3,然后拷贝 ehcache.xml 或者 ehcache3.xml 到类路径,并配置好缓存,需要在项目中引入对 ehcache 的支持
如何使用 RabbitMQ 作为消息通知
- 首先修改 j2cache.properties 中的 j2cache.broadcast 为 rabbitmq
- 然后在 j2cache.properties 中配置 rabbitmq.xxx 相关信息
- 在项目中引入对 rabbitmq 的支持
如何使用 RocketMQ 作为消息通知
- 同RabbitMQ
如何使用 memcached 作为二级缓存
- 首先修改 j2cache.properties 中的 j2cache.L2.provider_class 为 memcached,然后在 j2cache.properties 中配置 memcached.xxx 相关信息
- 需要在项目中引入对 memcached 的支持
为什么 J2Cache 初始化时,连接本机的 Redis 非常慢,要 5 秒以上
- 出现这种情况,请在系统 hosts 里配置机器名和IP地址的对应关系
何种 Redis 的存储模式最佳? generic 还是 hash ?
- 推荐使用 generic 存储模式,这也是 J2Cache 默认的存储模式,hash 模式最大的问题是无法单独对 key 进行 expire 设置。
J2Cache 两级缓存中的 Region 到底是什么东西?
- J2Cache 的 Region 来源于 Ehcache 的 Region