J2Cache(开源中国-缓存机制)

合集下载

8种缓存框架介绍

8种缓存框架介绍

8种缓存框架介绍缓存框架是一种用于存储和管理缓存数据的软件工具或库。

它们用于提高应用程序的性能,减少数据库或其他远程资源的访问次数。

在本文中,我们将介绍8种流行的缓存框架,包括Redis、Memcached、Ehcache、Guava Cache、Caffeine、Hazelcast、Infinispan和Apache Geode。

1. Redis: Redis是一个基于内存的缓存框架,提供了丰富的数据结构和灵活的功能,包括缓存、消息队列和数据持久化。

Redis的性能出色,并且具有高可用性和扩展性。

2. Memcached: Memcached是另一个流行的基于内存的缓存框架,广泛用于提高Web应用程序的性能。

它具有简单的架构和易于使用的API。

Memcached可以在多台服务器上进行水平扩展,以提供更高的负载能力。

3. Ehcache: Ehcache是一个Java缓存框架,可以用于将缓存添加到应用程序中。

它具有简单易用的API,并提供了多种缓存策略,如LRU (最近最少使用)和FIFO(先进先出)。

Ehcache还支持磁盘持久化和分布式缓存。

4. Guava Cache: Guava Cache是Google开发的一个轻量级缓存库,可以在本地JVM中实现缓存功能。

它具有内存敏感的淘汰策略和异步加载机制,可以优化资源利用和应用程序响应时间。

5. Caffeine: Caffeine是另一个基于本地内存的缓存库,由Google开发。

它被设计为高性能、无锁的缓存框架,并且具有比Guava Cache更高的吞吐量和更低的延迟。

6. Hazelcast: Hazelcast是一个分布式缓存框架和数据网格,可以在多个服务器上共享缓存数据。

它提供了分布式数据结构和分布式计算功能,并支持高可用性和容错性。

7. Infinispan: Infinispan是另一个开源的分布式缓存框架,用于构建高性能和高可靠性的应用程序。

【UCHome二次开发】缓存机制解析

【UCHome二次开发】缓存机制解析

UCHome中的常用数据皆通过调用缓存来实现读取,包括系统配置、用户组、群组栏目、用户栏目、词语屏蔽、积分规则、广告、用户向导任务、模块、MYOP默认应用等信息。

其中模板缓存的使用前面单独介绍过,见《【UCHome二次开发】模板解析》。

UCHome中常用数据是作为全局变量来使用的,具体用法可参考《【UCHome二次开发】全局变量》。

以下着重介绍缓存机制的具体实现。

1、缓存数据文件的生成UCHome生成的缓存数据文件位于/data/目录下。

缓存生成的相关函数位于/source/function_cache.php文件中,生成缓存的函数罗列如下:∙config_cache() 更新配置信息缓存,生成缓存文件data_config.php∙usergroup_cache() 更新用户组缓存,生成缓存文件data_usergroup.php∙profilefield_cache() 更新用户栏目缓存,生成缓存文件data_profilefield.php∙profield_cache() 更新群组栏目缓存,生成缓存文件data_profield.php∙censor_cache() 更新词语屏蔽缓存,生成缓存文件data_censor.php∙creditrule_cache() 更新积分规则,生成缓存文件data_creditrule.php∙ad_cache() 更新广告缓存,生成缓存文件data_ad.php∙task_cache() 更新用户向导任务,生成缓存文件data_task.php∙block_cache() 更新模块,生成缓存文件data_block.php∙tpl_cache() 更新模板缓存,清空模板缓存文件夹/data/tpl_cache/下所有文件使模板缓存重新生成∙block_data_cache() 更新模块缓存,清空模板缓存数据使缓存重新生成∙userapp_cache() 更新MYOP默认应用,生成缓存文件data_userapp.php∙app_cache() 更新应用名,生成缓存文件data_app.php除了模板和模块数据外,其他的只需调用对应的函数就可生成对应的缓存数据文件。

hutool缓存原理

hutool缓存原理

Hutool是一个Java工具库,它提供了许多实用的功能和工具类,包括缓存管理。

然而,Hutool 本身并不提供独立的缓存框架或实现,而是使用了其他流行的缓存技术来实现其缓存功能。

具体来说,Hutool可以与以下常见的缓存技术集成:
1.Caffeine:Caffeine是一种基于Java的高性能内存缓存库。

Hutool中的CacheUtil类可以
与Caffeine集成,提供方便易用的缓存管理功能。

2.Ehcache:Ehcache是一个广泛使用的开源Java缓存框架。

Hutool中的CacheUtil类可以
与Ehcache集成,使用Ehcache实现缓存功能。

3.Redis:Redis是一种流行的内存数据结构存储系统,也可以用作缓存。

Hutool中的
CacheUtil类可以与Redis集成,使用Redis作为分布式缓存。

Hutool的缓存原理主要依赖于所选择的具体缓存技术的实现。

它提供了统一的API和封装,使使用者可以轻松地在应用程序中使用缓存功能。

根据所选的缓存技术,Hutool会将数据存储在内存中或者通过与外部缓存服务器进行通信来实现缓存操作。

需要注意的是,Hutool只是作为工具库提供了对缓存技术的封装和简化,并没有重新实现缓存技术本身。

因此,深入了解所选缓存技术的原理和特性,以及与Hutool的集成方式,将有助于更好地理解Hutool的缓存功能。

ehcache原理

ehcache原理

ehcache原理Ehcache是一个开源的、高性能的Java缓存库,它可以被用于在Java应用程序中进行缓存数据以提高性能。

以下是Ehcache的原理。

1.缓存机制:Ehcache将数据存储在内存中,以提高访问速度。

它使用一个固定的内存空间作为缓存区域,当缓存被填满时,它会使用一种LRU(最近最少使用)策略来替换最旧的缓存项。

Ehcache还可以将缓存项存储在磁盘上,以便在应用程序重启时持久化缓存数据。

2.键值对存储:Ehcache使用键值对的方式存储缓存项。

每个缓存项都有一个唯一的键和一个对应的值。

通过键,应用程序可以在缓存中查找和访问相应的值。

3.缓存策略:Ehcache提供了多种缓存策略来满足不同的需求。

例如,可以通过设置缓存的存活时间来控制缓存项的有效期,一旦超过了指定的时间,缓存项将会过期并被移出缓存区域。

此外,Ehcache还支持基于空间大小的缓存策略,通过设置缓存的最大容量,可以限制缓存中存储的缓存项数量,以防止缓存过度填充。

4.缓存失效:Ehcache提供了多种缓存失效的方式。

除了根据时间或空间来失效缓存项之外,Ehcache还支持手动失效缓存项,即应用程序可以通过指定键来从缓存中移除特定的缓存项。

5.缓存管理:Ehcache允许应用程序对缓存进行管理和配置。

可以通过配置文件或程序代码来设置缓存的属性,例如存活时间、最大容量等。

Ehcache还提供了监控和统计功能,以便了解缓存的使用情况和性能。

6.缓存同步:Ehcache支持多线程环境下的缓存同步。

当多个线程同时访问同一个缓存项时,Ehcache会通过锁机制来确保只有一个线程更新缓存数据。

其他线程将等待更新完成后再获取数据,以保证数据的一致性。

7.分布式缓存:Ehcache还支持分布式缓存,在集群环境下可以将缓存数据存储在多个节点上。

Ehcache使用RMI机制来实现节点之间的通信和缓存数据的同步。

分布式缓存可以提高应用程序的可伸缩性和容错性。

jetcache 参数

jetcache 参数

jetcache 参数
- `cacheType`:有`LOCAL`、`REMOTE`和`BOTH`三种选择,分别代表本地内存、远程Cache Server(如Redis)和两级缓存。

- `expire`:缓存超时时间,单位为秒。

- `cacheRefresh`:用于指定缓存的刷新策略,包括`refresh`(刷新的频率)、`stopRefreshAfterLastAccess`(上次访问后停止刷新的时间)和`timeUnit`(时间单位)。

- `CreateCache`:通过注解创建Cache实例,可设置`expire`(缓存超时时间)、`cacheType`(缓存类型)和`localLimit`(本地缓存大小限制)等参数。

- `Cache API`:提供了与缓存操作相关的方法,如`get`、`put`、`remove`和`computeIfAbsent`等,实现了jsr107规范Cache接口的部分方法。

这些参数可以帮助你更好地控制JetCache的行为和性能,从而优化应用程序的性能和响应时间。

在使用JetCache时,建议根据具体的业务需求和场景选择合适的参数配置。

ChinaCache流媒体标准点播CDN加速服务(ChinaCache 蓝汛程光)

ChinaCache流媒体标准点播CDN加速服务(ChinaCache 蓝汛程光)

ChinaCache 蓝汛程光 Phone:1-500-133-8606 ChinaCache 标准流媒体点播 标 播服务 Ch hinaCa ache 流 流媒体标 点播服 标准点 服务 随着宽带接 接入的普及,电影、音乐、 、体育等媒体 体点播成为互 互联网上重要 要的应用。

越 越来越多的媒 媒体内容提供 供商通 过网 网络来提供点 点播服务,网民也可随时随地的通过互 互联网点播喜 喜欢的内容。

为此,Chin naCache 推出 出了流媒体标 标准点播服务,可以将源站 站大量的流媒 媒体内容分发 发到位于各个 个城市、各个 个运营 网络的专用流 流媒体服务器 器中。

无论用户 户来自何处, ,都可以从性 性能最优、距 距离最近的流 流媒体访问服 服务器上来获 获得高 商网 速高 高质的精彩内 内容。

流媒体内容提供商不 不再为网络质 质量不能保证 证服务质量而 而烦恼,也不 不用担心大量 量用户访问所 所带来 的带 带宽压力。

e 体直播服务基 基于目前最为 为通用的 Wind dows Media Streaming,采用稳定的 NetApp 设 的 设备作 ChinaCache 标准流媒体 为分 分发系统的基 基础,是结合 ChinaCac 强大的资 合了 che 资源储备及经 经验丰富的运 运维团队而形 形成的一站式 式流媒体标准 准点播 服务 务;采用 Chi inaCache 流媒 媒体标准点播 播服务,客户 户无须考虑任 任何带宽设备 备采购、用户 户访问质量、流量风暴、恶意 攻击 击等问题,从 从而只需专注 注于业务,其余的由 Chin naCaChe 全部 部解决。

一.产品服务及 及核心优势 势1.关键产品 品概述:图 1.1 ChinaCache 流媒体点播 e 播架构图 点及优势 2.服务特点 1)流量控制 1 制灵活,支持 持多种流媒体访 访问协议:M MMS、RTSP、HTTP; 2)支持多种 2 种流媒体格式 式:Microsoft Windows M Media、Real Media、Ap l pple Quick T Time; 3)支持文件 3 件预加载;如欲了解更多详情 敬请访问:                                                                                                                                    http://w 情,   www.chinacache  ChinaCache 蓝汛程光 Phone:1-500-133-8606ChinaCache 蓝汛程光 Phone:1-500-133-8606  ChinaCache 标准流媒体点播服务 4)支持视频加密,为用户提供视频安全保障; 5)通过 CDN 全球负载均衡机制,可动态调整各节点资源为用户提供服务; 6)带宽资源雄厚,轻松应对突发流量; 7)高速流媒体分布缓存技术有效解决在线点播断续不畅的问题; 8)跨 ISP 分布式节点结构,解决网间传输瓶颈问题;二.谁在使用 ChinaCache 流媒体标准点播服务新华网                                                中国新闻网                                        CRI(国际广播电台)  三.源站要求及客户需配合的工作1.源站要求  ChinaCache  流媒体标准点播服务支持两种点播文件源获取方式:  1)客户提供 Windows Media Server 点播源站;  2)客户提供点播文件,ChinaCache 提供 Windows Media Server 点播源站。

ehcache缓存原理

ehcache缓存原理

Ehcache是一个开源的Java分布式缓存框架,它使用内存来存储数据并在需要时从磁盘中加载数据。

它的工作原理如下:
当应用程序需要访问数据时,Ehcache首先在内存中查找数据。

如果数据在内存中,则立即返回数据。

如果数据不在内存中,Ehcache将从磁盘中加载数据并将其存储在内存中,然后返回数据。

当内存中的数据超过一定的限制时,Ehcache会将一些数据存储到磁盘上,以腾出内存空间。

Ehcache使用一种称为淘汰策略的机制来决定哪些数据应该被保留在内存中,哪些应该被淘汰。

常用的淘汰策略有LRU(最近最少使用),LFU(最少访问次数)等。

Ehcache可以通过网络将缓存数据分发到多台机器上,这样就可以实现分布式缓存。

这样的话,当一台机器中的缓存被访问时,其他机器上的缓存也会被更新。

这样,如果其中一台机器宕机,应用程序仍然可以从其他机器获取所需的数据,确保了系统的高可用性。

除此之外,Ehcache还提供了一些高级特性,如缓存过期,缓存刷新,缓存锁定等,来满足不同场景下的需求。

总之,Ehcache是一个高性能,可扩展的缓存框架,可以有效地提高应用程序的性能和可用性。

j2cache原理

j2cache原理

j2cache原理j2cache 是一款广受欢迎的 Java 缓存框架,可以用于提高系统性能和资源利用率。

它采用了多级缓存体系,并支持多种存储介质,如内存、文件和数据库等。

下面我们就来分步骤阐述 j2cache 的原理,以期更好地了解它的工作机制。

一、j2cache 的多级缓存体系j2cache 的多级缓存体系主要包括三层缓存,分别是 L1 缓存、L2 缓存和 L3 缓存。

其中,L1 缓存为进程内缓存,即用户 JVM 实例的内存中缓存;L2 缓存可以分布式缓存,即多个 JVM 实例共同缓存;L3 缓存为持久化缓存,即缓存数据以文件或关系型数据库的形式永久化存储。

二、j2cache 的缓存数据结构j2cache 的缓存数据结构采用了 key-value 的形式,key 表示缓存数据的唯一标识,value 表示具体的缓存数据。

数据可以是任意类型的对象,包括自定义对象。

三、j2cache 的数据同步机制j2cache 的缓存数据同步机制主要采用了发布/订阅模式。

即缓存节点通过订阅某个主题来获取缓存变更通知,而其他节点则通过发布消息来通知所有订阅该主题的节点更新缓存数据。

为了保证数据同步的正确性和可靠性,j2cache 还提供了各种缓存数据自动过期和数据同步失败的自动重试机制。

四、j2cache 的存储介质和缓存策略j2cache 的存储介质可以是内存、文件和数据库,并且可以根据实际情况进行配置。

同时,j2cache 还提供了多种缓存策略,如 FIFO、LRU、LFU 等,以满足不同场景下的缓存需求。

五、j2cache 的应用场景j2cache 可以广泛应用于各种 Java Web 开发、大数据计算和分布式系统等领域,可以提高系统性能和资源利用率,减轻数据库负载,加速搜索,优化访问速度等。

综上所述,j2cache 是一款功能强大、易于使用的 Java 缓存框架,它采用了多级缓存体系和数据同步机制,支持多种存储介质和缓存策略,可应用于各种场景,极大地提高了系统性能和资源利用率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/p/ehcache https:///developerworks/cn/java/j-lo-高峰期重启导致的缓存雪崩 单节点对突发的攻击应付不足 多节点运行时缓存数据不同步


缓存系统选型

Ehcache 集 群 方 案 的 不 足
结束
传输的数据包括: region+keys
结束
Tomcat_N
Tomcat_1
细节 1 : Ehcache 缓存自动失效
public class EhCache implements Cache, CacheEventListener { private net.sf.ehcache.Cache cache; private CacheExpiredListener listener; /** * Creates a new pluggable cache based on a cache name. * * @param cache The underlying EhCache instance to use. */ public EhCache(net.sf.ehcache.Cache cache, CacheExpiredListener listener) { this.cache = cache; this.cache.getCacheEventNotificationService().registerListener(this); this.listener = listener; } @Override public void notifyElementExpired(Ehcache cache, Element elem) { if(listener != null){ listener.notifyElementExpired(cache.getName(), elem.getObjectKey()); } }
中国源
1. 使用 Team@OSC 进行团队协作开发 2. 将代码托管到 Git@OSC 3. 使用 Sonar@OSC 进行代码质量分析 4. 将代码部署到 PaaS@OSC 演示平台
TODO :测试 + 代码评审
细节 3 :序列化库的选择
优点 Java 序列化 Kryo FST 兼容性最佳,无侵入性 速度快 速度快,无侵入性 缺点 速度慢,体积大 侵入性强 不同平台序列化的 结果不同(新版本 已解决)
J2Cache 配置
#J2Cache configuration ######################################### # Level 1&2 provider # values: # none -> disable this level cache # ehcache -> use ehcache as level 1 cache # redis -> use redis as level 2 cache # [classname] -> use custom provider #########################################

集中式缓存的不 (redis,memcached) 足 是否可以取长补短???

J2Cache 的设计思路
Nginx 缓存: L1 : Ehcache L2 : Redis Tomcat1 ehcache JGroups TomcatN ehcache
Redis
数据库
J2Cache 数据读取流程
细节 2-1 :多 region 的处理
Key → Value
Region_1
Region_2
Region_3
Region_N
Ehcache 实例 ( CacheManager )
细节 2-2 : Redis 处理 region
/** * 生成缓存的 key * @param key * @return */ @SuppressWarnings("rawtypes") private String getKeyName(Object key) { if(key instanceof Number) return region + ":I:" + key; else{ Class keyClass = key.getClass(); if(String.class.equals(keyClass) || StringBuffer.class.equals(keyClass) || StringBuilder.class.equals(keyClass)) return region + ":S:" + key; } return region + ":O:" + key; }

程序清除 手工清除

Ehcache 缓存框架
Ehcache 是内存中的 Java 缓存框架,特点:
● ● ● ● ●
内存中,速度快 两级缓存(内存 + 磁盘) 多区域 (region) 的缓存数据结构 缓存数据侦听接口 支持多种集群部署方式 (JGroups/RMI/Ehcache Server)

对象缓存: id → o b je c t 列表缓存: L ist<id> 而 不 是List<Bean> 页面片段缓存 页面缓存: C DN ( Squid、 Varnish、 Traffic Server )



缓存的清除策略

Ehcache自 动 清 除 timeToLiveSeconds=3600
cache.L1.provider_class=ehcache cache.L2.provider_class=redis
## connection redis.host = localhost redis.port = 6379 redis.timeout = 2000 ##redis.password = redis.database = 1
J2Cache 两级缓存框架
@ 红薯 /javayou
内容

关于开源中国的一些数据
OSChina 的几种缓存策略 Ehcache 缓存框架



实际运行的问题 缓存系统选型时的考量
J2Cache —— 两级缓存框架


开源中国的一些统计数据

每 天 IP > 5 0 w 每 天 PV > 300w 每天处理动态请求 >数 2000w 高 峰 期NginxStatus > 15000 系统负载 > 50%
开始 1. 从 Ehcache 读数据 N 2. 从 Redis 读数据 数据存在? Y 数据写入 L1 从 DB 读取数据 N
数据存在? Y
数据写入 L1 & L2
返回结果
J2Cache 数据更新流程
开始
清除 L1 数据
接收到清除缓 存的群组命令
jgroups
清除 L2 数据 清除 L1 数据
发送组播命令通 知群组其他节点
J2Cache 使用的一些技巧

Ehcache 的 磁 盘 存 储 建 立 在 内 存 中 (/dev/shm/xxxx)
<cache name="pages" maxElementsInMemory="500" eternal="true" overflowToDisk="false" />

尽量设置缓存永久性,通过程序进行更新
主服务器: DELL SC1435 → 12G 内存 /AMD 2G*2/SATA * 2 DELL R720 → 32G 内存 /Xeon E5520 * 2/SAS/RAID 1+0


互动性强!


CDN 节点: 4 个自建的 CDN 节点(电信、联通、移动、阿里云)
OSChina 的几种缓存策略
J2Cache 下一步计划

各 级 缓 存 的 统(HITS/MISSED 计 等)
暂 时 不 考 虑 f, ie ld 批 量 删 除 性 能 低 下

使 用 HGET/HSET替 代 现 有 大 哈 希 表 的 方 式 支持其他的缓存框架和服务

哪里获取 J2Cache
/ld/J2Cache
相关文档
最新文档