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
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐