
# 1 简介
cache是提高系统性能的重要设施,越靠近用户的缓存命中,请求链越短,响应越快,效率越高,对后端系统压力越小。它对系统整体性能的提升有很大的帮助。
平台系统的缓存可以分为分布式缓存、本地缓存、应用缓存和页面缓存。
+ **分布式缓存**
使用redis,独立进程部署,与本地应用隔离,多个节点共享缓存数据层查询结果集以减轻存储系统压力,或经过复杂计算得出的结果,缓存值可能被多次使用则需要缓存。
**优点**:集群共享,缓存系统独立部署,可线性扩容。
**淘汰策略**:过期淘汰,缓存键超过设定的时间则淘汰;溢出淘汰,当缓存量超过redis淘汰阀值,使用LRU将最近最少使用的缓存键淘汰(实际使用中配置为不淘汰)。
**更新策略**:当数据更新时,先更新数据库,然后删除缓存中对应的键值。
+ **本地缓存**
使用ehcache,适合缓存数据字典及高频访问数据。
**优点**:和应用在同一进程,访问速度快
**缺点**:容量有限;集群多个节点不能共享
**淘汰策略**:过期淘汰,缓存键超过设定的时间未被访问则淘汰;溢出淘汰,当缓存量超过设定的最大值,使用LRU算法将最近最少使用的缓存键淘汰。
# 2 应用场景
能够通过添加缓存提升系统性能的各个场景都适用。
# 3 接口说明
缓存相关接口定义和实现存在于bos-cache-1.0.jar中。对于使用者来说只需要调用kd.bos.cache.CacheFactory的getCommonCacheFactory()获取工厂对象,然后调用工厂对象的方法获取合适的缓存对象(分布式缓存、本地缓存等),最后调用缓存对象接口方法即可。
## 3.1 接口列表
***CacheFactory***
| 静态方法 | 说明 |
| - | - |
| getCommonCacheFactory | 获取通用缓存工厂对象 |
| getDistributeSessionlessCache | 获取分布式会话无关缓存对象 |
| $getOrCreateLocalMemoryCache | 获取本地缓存对象 |
***LocalMemoryCache***
| 接口方法 | 说明 |
| - | - |
| put | 添加数据到缓存 |
| get | 获取缓存数据 |
| remove | 删除缓存数据 |
| contains | 判断缓存数据是否存在 |
| clear | 清除当前缓存 |
| removeMapFields | 缓存数据为Map,删除Map中的数据 |
***DistributeSessionlessCache***
| 接口方法 | 说明 |
| - | - |
| addList | 添加列表类型缓存 |
| insertList | 在列表类型缓存指定index中插入新数据 |
| getList | 获取列表类型缓存 |
| setListObject | 设置列表类型缓存指定index中列表元素值 |
| getListObject | 获取数组列表缓存指定index中列表元素值 |
| removeListObject | 删除数组列表缓存指定index中列表元素值 |
| getListLength | 获取数组列表缓存数组的长度 |
| addToSet | 添加集合类型缓存 |
| removeSetValues | 删除集合类型缓存 |
| getSetValues |