J2Cache(开源中国-缓存机制)
- 格式:pdf
- 大小:664.95 KB
- 文档页数:21
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中的常用数据皆通过调用缓存来实现读取,包括系统配置、用户组、群组栏目、用户栏目、词语屏蔽、积分规则、广告、用户向导任务、模块、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是一个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是一个开源的、高性能的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 参数
- `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 蓝汛程光 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是一个开源的Java分布式缓存框架,它使用内存来存储数据并在需要时从磁盘中加载数据。
它的工作原理如下:
当应用程序需要访问数据时,Ehcache首先在内存中查找数据。
如果数据在内存中,则立即返回数据。
如果数据不在内存中,Ehcache将从磁盘中加载数据并将其存储在内存中,然后返回数据。
当内存中的数据超过一定的限制时,Ehcache会将一些数据存储到磁盘上,以腾出内存空间。
Ehcache使用一种称为淘汰策略的机制来决定哪些数据应该被保留在内存中,哪些应该被淘汰。
常用的淘汰策略有LRU(最近最少使用),LFU(最少访问次数)等。
Ehcache可以通过网络将缓存数据分发到多台机器上,这样就可以实现分布式缓存。
这样的话,当一台机器中的缓存被访问时,其他机器上的缓存也会被更新。
这样,如果其中一台机器宕机,应用程序仍然可以从其他机器获取所需的数据,确保了系统的高可用性。
除此之外,Ehcache还提供了一些高级特性,如缓存过期,缓存刷新,缓存锁定等,来满足不同场景下的需求。
总之,Ehcache是一个高性能,可扩展的缓存框架,可以有效地提高应用程序的性能和可用性。
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 缓存框架,它采用了多级缓存体系和数据同步机制,支持多种存储介质和缓存策略,可应用于各种场景,极大地提高了系统性能和资源利用率。
分享 6 个国内优秀 Java 后台管理框架的开源项目,建议收藏!后台管理系统是内容管理系统 Content Manage System( 简称 CMS) 的一个子集。
CMS 是 Content Management System的缩写,意为 '内容管理系统 '。
内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市场。
我自己也一直在搭建一个即好用,又美观的后台管理系统的手动架,可以即拿的即用的项目。
不用要重复的去造轮子,把有限的时间用去一些有意思的事。
下面分享一下开源中国中有哪些优秀的Java 开源后台管理系统。
所有项目在中输入项目都可以搜索的到。
ThinkGem / JeeSite(开发人员/项目名称)watch 2100 star 4000 fork 2600JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE 快速开发平台。
JeeSite 是您快速完成项目的最佳基础平台解决方案, JeeSite 是您想学习 Java 平台的最佳学习案例, JeeSite还是接私活的最佳助手。
JeeSite 是在 Spring Framework 基础上搭建的一个 Java 基础开发平台,以 Spring MVC 为模型视图控制器, MyBatis 为数据访问层, Apache Shiro 为权限授权层, Ehcahe 对常用数据进行缓存, Activit 为工作流引擎。
是JavaEE 界的最佳整合。
JeeSite主要定位于企业信息化领域,已内置企业信息化系统的基础功能和高效的代码生成工具,包括:系统权限组件、数据权限组件、数据字典组件、核心工具组件、视图操作组件、工作流组件、代码生成等。
前端界面风格采用了结构简单、性能优良、页面美观大气的Twitter Bootstrap页面展示框架。
采用分层设计、双重验证、提交数据安全编码、密码加密、访问验证、数据权限验证。
阿⾥开源的缓存框架JetCache之前⼀直在⽤Spring Cache进⾏接⼝数据的缓存,主要是Spring Cache在对具体key缓存失效时间的设置不是很⽅法,还要⾃⼰去扩展,⽆意中发现了阿⾥的JetCache。
⼤部分的需求都能满⾜,并且有⼀些很实⽤的功能,今天给⼤家介绍下。
JetCache是⼀个基于Java的缓存系统封装,提供统⼀的API和注解来简化缓存的使⽤。
JetCache提供了⽐SpringCache更加强⼤的注解,可以原⽣的⽀持TTL、两级缓存、分布式⾃动刷新,还提供了Cache接⼝⽤于⼿⼯缓存操作。
当前有四个实现,RedisCache、TairCache(此部分未在github开源)、CaffeineCache(in memory)和⼀个简易的LinkedHashMapCache(in memory),要添加新的实现也是⾮常简单的。
全部特性:通过统⼀的API访问Cache系统通过注解实现声明式的⽅法缓存,⽀持TTL和两级缓存通过注解创建并配置Cache实例针对所有Cache实例和⽅法缓存的⾃动统计Key的⽣成策略和Value的序列化策略是可以配置的分布式缓存⾃动刷新,分布式锁 (2.2+)异步Cache API (2.2+,使⽤Redis的lettuce客户端时)Spring Boot⽀持体验⼀下增加Maven配置:<dependency><groupId>com.alicp.jetcache</groupId><artifactId>jetcache-starter-redis</artifactId><version>2.5.11</version></dependency>配置内容:# 采⽤Java序列化存储jetcache.remote.default.valueDecoder = java# Key的转换器jetcache.remote.default.keyConvertor = fastjson# 是否加⼊缓存key前缀jetcache.areaInCacheName = falsejetcache.remote.default.valueEncoder = java# 缓存类型。