188bet.com社区 主页 业界资讯 技能文摘 查看内容

J2Cache两级缓存中的Region究竟是什么东西?

2019-4-4 14:53| 发布者: joejoe0332| 查看: 1874| 谈论: 0|原作者: oschina|来自: oschina

摘要: 不时有人来问询 J2Cache 里的 Region 究竟是什么概念,这儿做共同的回答。 J2Cache 的 Region 来源于 Ehcache 的 Region 概念。 一般咱们在运用像 Redis、Caffeine、Guava Cache 时都没有 Region 这样的概念,特别是 ...

不时有人来问询 J2Cache 里的 Region 究竟是什么概念,这儿做共同的回答。

J2Cache 的 Region 来源于 Ehcache 的 Region 概念。

一般咱们在运用像 Redis、Caffeine、Guava Cache 时都没有 Region 这样的概念,特别是 Redis 是一个大哈希表,更没有这个概念。

在实践的缓存场景中,不同的数据会有不同的 TTL 战略,例如有些缓存数据能够永不失效,而有些缓存咱们期望是 30 分钟的有效期,有些是 60 分钟等不同的失效时刻战略。在 Redis 咱们能够针对不同的 key 设置不同的 TTL 时刻。可是一般的 Java 内存缓存结构(如 Ehcache、Caffeine、Guava Cache 等),它无法为每一个 key 设置不同 TTL,由于这样办理起来会十分复杂,并且会查看缓存数据是否失效时功能极差。所以一般内存缓存结构会把一组相同 TTL 战略的缓存数据放在一同进行办理。

J2Cache 的 Region 概念对应联系如下所示:

Ehcache region
Caffeine Cache
Guava Cache Cache

像 Caffeine 和 Guava Cache 在寄存缓存数据时需求先构建一个 Cache 实例,设定好缓存的时刻战略,如下代码所示:

Caffeine<Object, Object> caffeine = Caffeine.newBuilder();
caffeine = caffeine.maximumSize(size).expireAfterWrite(expire, TimeUnit.SECONDS);
Cache<String, Object> theCache = caffeine.build();

这时候你才能够往 theCache 写入缓存数据,而不能再独自针对某一个 key 设定不同的 TTL 时刻。

而 Redis 能够让你十分随意的给不同的 key 设置不同的 TTL。

J2Cache 是内存缓存和 Redis 这类集中式缓存的一个桥梁,因而它只能是兼容两者的特性。

J2Cache 默许运用 Caffeine 作为一级缓存,其装备文件坐落 caffeine.properties 中。一个底子运用场景如下:

#########################################
# Caffeine configuration
# [name] = size, xxxx[s|m|h|d]
#########################################

default = 1000, 30m 
users = 2000, 10m
blogs = 5000, 1h

上面的装备界说了三个缓存 Region ,分别是:

  1. 默许缓存,巨细是 1000 个目标,TTL 是 30 分钟
  2. users 缓存,巨细是 2000 个目标,TTL 是 10 分钟
  3. blogs 缓存,巨细是 5000 个目标,TTL 是 1 个小时

例如咱们能够用 users 来寄存用户目标的缓存,用 blogs 来寄存博客目标缓存,两种的 TTL 是不同的。

而 default 是当咱们调用如下办法时: 

public void set(String region, String key, Object value)

假如咱们传入的 region 参数(假设为:region1)没有在 caffeine.properties 中界说的话,那 J2Cache 会主动创立一个名为 region1 的缓存 Region,其装备和 default 的装备共同。

所以要用好缓存首先要保证以下几点:

  1. 依据事务规划好不同的 region 来寄存不同的缓存数据
  2. 依据实践情况确认每个 region 的缓存数据数量和 TTL 时刻
  3. 尽量必要未经界说直接运用一个全新的 region (防止运用 default 数据)

更多关于 J2Cache 的介绍请看 https://gitee.com/ld/J2Cache

原文地址:https://my.oschina.net/javayou/blog/3031773

  • 快毕业了,没作业经验,
    找份作业好难啊?
    赶忙去人才芯片公司锻炼吧!!

最新谈论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|188bet.com社区 ( 浙B2-20090187  

回来顶部