缓存¶
规格书¶
默认情况下,EHCache用作Cache实现。有关EHCache的更多信息,请参见http://ehcache.org 。如果超过了配置文件中指定的元素数量或大小限制,则将丢弃在缓存中注册的Object 。此外,过去的有效期间Object 也将被丢弃的对象。使用缓存时,有必要将一个具有任意名称的xml文件放在该缓存设置的%CONTEXT_PATH%/ WEB-INF / conf / im-ehcache-config /文件夹下。以下是配置文件的示例。<?xml版本=“ 1.0”编码=“ UTF-8”?> <im-ehcache-config xmlns =“ http:// www.intra intra-mart .jp / cache / ehcache / config” xmlns:xsi =“ http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation =“宀:. //万维网intra-mart .JP /缓存/了Ehcache /配置IM-的Ehcache-Config.Xsd”> <缓存 名称=“ myCache” 启用=“真” max-bytes-memory =“ 10m” 内存中最大元素数=“ 100” 溢出到磁盘=“真” max-bytes-disk =“ 50m” 磁盘上最大元素数=“ 500” 空闲时间=“ 600” 生存时间=“ 3600” /> </ im-ehcache-config>注意
将字符代码设置为UTF-8并保存。有关每个设置的详细内容信息如下。
属性名称 说明 名 设置缓存名称。 使能 指定是或否。如果指定为false,则相应的缓存将无效。 最大内存 指定用于在内存中存储Object 的最大大小。可以使用1k,10M,50G等符号。 内存中的最大元素 指定要缓存在内存中的最大Object 数。 磁盘溢出 设置当超过要在内存中缓存的区域的上限时是否写入磁盘。 最大字节磁盘 指定用于在磁盘上存储Object 的最大大小。可以使用1k,10M,50G等符号。 磁盘上的最大元素 指定要在磁盘上缓存的最大Object 数。 空闲时间 指定空闲时间(秒)。如果在指定时间内未引用目标Object ,则销毁该Object 。 生存时间 指定寿命(秒)。如果超过指定的寿命,则该Object 将被破坏。
编程方式¶
函数getUsers(){//生成缓存实例。参数“ myCache”必须指定在im-ehcache-config中定义的缓存名称。 var cache = new Cache('myCache'); //尝试从缓存中获取信息。如果可以获取,则返回该值。 var users = cache.get('key'); if(users!= null){return users;} //由于缓存中没有信息,请从数据库获取信息。 var database = new TenantDatabase(); var result = database.select('SELECT user_cd FROM b_m_account_b'); //如果无法从数据库获取信息,请返回一个空数组。 //通常,需要日志输出和错误信息返回。请根据目的适当实施。 if(result.error){return [];} //将获取的信息存储在缓存中并返回。 users = []; for(var i = 0,length = result.data.length; i <length; i ++){var record = result.data [i]; users.push(record.user_cd);} //缓存存放并返回。 cache.put(“键”,用户);返回用户;}从数据库检索数据的示例注解
所有缓存生存期均遵循配置文件中描述的内容。如果需要显式删除缓存,则可以通过调用Cache#remove或Cache#removeAll来删除它。注解
当设置了“最大字节内存”和“最大字节磁盘”属性时,在高速缓存中注册Object 时,将计算Object 的大小。在这种情况下,如果要注册的Object 具有对其他Object 的大量引用,则计算过程可能会花费很长时间并且会导致性能下降。如果要注册的Object 具有超过1000个引用,则以下消息将输出到日志。尝试计算对象图的大小时,已达到配置的1,000个对象引用的限制。如果继续进行大小调整操作,可能会导致性能严重下降。可以通过将CacheManger或Cache <sizeOfPolicy>元素maxDepthExceededBehavior设置为“ abort”来避免这种情况或添加带有@IgnoreSizeOf批注的停止点。如果在配置的限制范围内不降低性能,请使用CacheManager或Cache <sizeOfPolicy>元素maxDepth属性提高限制值。有关更多信息,请参阅Ehcache配置文档。如果输出此日志,请检查要存储在缓存中的Object 的配置,或将“ max-bytes-memory”或“ max-bytes-disk”替换为“ max-elements-on-memory”,或考虑使用“磁盘上最大元素数”。