博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
系统集成j2cache
阅读量:4209 次
发布时间:2019-05-26

本文共 2171 字,大约阅读时间需要 7 分钟。

系统集成j2cache

 

J2Cache 是 OSChina 目前正在使用的两级缓存框架(要求至少 Java 8)。第一级缓存使用内存(同时支持 Ehcache 2.x、Ehcache 3.x 和 Caffeine),第二级缓存使用 Redis(推荐)/Memcached 。 由于大量的缓存读取会导致 L2 的网络成为整个系统的瓶颈,因此 L1 的目标是降低对 L2 的读取次数。 该缓存框架主要用于集群环境中。单机也可使用,用于避免应用重启导致的缓存冷启动后对后端业务的冲击。

  1. 读取顺序 -> L1 -> L2 -> DB
  2. 数据更新

1 从数据库中读取最新数据,依次更新 L1 -> L2 ,发送广播清除某个缓存信息

2 接收到广播(手工清除缓存 & 一级缓存自动失效),从 L1 中清除指定的缓存信息

文档地址:

api地址:

视频介绍:

 

一. 引用 Maven (会自动加载依赖,或见源码core下pom 文件)

<dependency> <groupId>net.oschina.j2cache</groupId> <artifactId>j2cache-core</artifactId> <version>xxxxx</version> </dependency>

 

二.使用 ehcache 作为一级缓存

首先修改 j2cache.properties 中的 j2cache.L1.provider_class 为 ehcache 或者 ehcache3,然后拷贝 ehcache.xml 或者 ehcache3.xml 到类路径,并配置好缓存,需要在项目中引入对 ehcache 的支持:

<dependency><!-- Ehcache 2.x //--> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.10.4</version> </dependency> <dependency><!-- Ehcache 3.x //--> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> <version>3.4.0</version> </dependency>

 

三.配置文件

拷贝 j2cache.properties 和 caffeine.properties 到你项目的源码目录,并确保这些文件会被编译到项目的 classpath 中。如果你选择了 ehcache 作为一级缓存,需要拷贝 ehcache.xml 或者 ehcache3.xml 到源码目录(后者对应的是 Ehcache 3.x 版本),这些配置文件的模板可以从 这里获取。

 

 

四.spring cache 和 j2cache 继承示例代码,spring 配置类

@Configuration @EnableCaching public class MyCacheConfig extends CachingConfigurerSupport { @Override public CacheManager cacheManager() { // 引入配置 J2CacheConfig config = J2CacheConfig.initFromConfig("/j2cache.properties"); // 生成 J2CacheBuilder J2CacheBuilder j2CacheBuilder = J2CacheBuilder.init(config); // 构建适配器 J2CacheSpringCacheManageAdapter j2CacheSpringCacheManageAdapter = new J2CacheSpringCacheManageAdapter(j2CacheBuilder, true); return j2CacheSpringCacheManageAdapter; } }

 

五.使用

 

  @Caching : @Caching(cacheable = @Cacheable("users"), evict = { @CacheEvict("cache2"),

  @Cacheable(value = "appConfigs", key = "'codes_'+#typeCodes"):用于query

对于一个支持缓存的方法,Spring会在其被调用后将其返回值缓存起来,以保证下次利用同样的参数来执行该方法时可以直接从缓存中获取结果,而不需要再次执行该方法

@CachePut 用于save

与@Cacheable不同的是使用@CachePut标注的方法在执行前不会去检查缓存中是否存在之

前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定缓存中

@CacheEvict(value = "user", key = "#user.id"):用于update

是用来标注在需要清除缓存元素的方法或类上的。当标记在一个类上时表示其中所有的方法

的执行都会触发缓存的清除操作的执行都会触发缓存的清除操作

转载地址:http://bwrli.baihongyu.com/

你可能感兴趣的文章
欢迎加入【亿能测试快讯】邮件列表!
查看>>
为什么我们的自动化测试“要”这么难
查看>>
LoadRunner性能脚本开发实战训练
查看>>
测试之途,前途?钱途?图何?
查看>>
测试设计与测试项目实战训练
查看>>
HP Sprinter:敏捷加速器
查看>>
单元测试培训PPT
查看>>
adb常用命令
查看>>
通过LR监控Linux服务器性能
查看>>
通过FTP服务的winsockes录制脚本
查看>>
LRwinsocket协议测试AAA服务器
查看>>
Net远程管理实验
查看>>
反病毒专家谈虚拟机技术 面临两大技术难题
查看>>
几种典型的反病毒技术:特征码技术、覆盖法技术等
查看>>
性能测试一般过程与LR性能测试过程
查看>>
Software Security Testing软件安全测试
查看>>
SQL注入漏洞全接触--进阶篇
查看>>
SQL注入漏洞全接触--高级篇
查看>>
SQL注入法攻击一日通
查看>>
论文浅尝 | 通过共享表示和结构化预测进行事件和事件时序关系的联合抽取
查看>>