缓存服务
# 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 | 获取集合类型缓存 |
| getSetLength | 获取集合类型缓存集合长度 |
| put | 添加缓存 |
| hset | 与Redis的hset类似 |
| hmset | 与Redis的hmset类似 |
| hmget | 与Redis的hmget类似 |
| hget | 与Redis的hget类似 |
| hgetAll | 与Redis的hgetAll类似 |
## 3.2 使用示例
通过CacheFactory组件提供的API获取缓存工厂, 创建缓存器。
1. **分布式缓存**
```java
DistributeSessionlessCache cache = CacheFactory.getCommonCacheFactory().getDistributeSessionlessCache("customRegion");
cache.put("demo",value);//将自定义参数加入缓存
cache.get("demo");//获取自定义缓存
```
customRegion 为自定义缓存区域,在部署层面,可以将不同region区域配置为不同的redis,部署方式为设置redis.serversForCache.customRegion=reids地址。如果不配置则使用公共的缓存配置。
2. **本地缓存**
```java
//本地缓存
CacheConfigInfo localConfig = new CacheConfigInfo();
localConfig.setMaxItemSize(5000);
localConfig.setTimeout(600);
LocalMemoryCache localcache = CacheFactory.getCommonCacheFactory().getOrCreateLocalMemoryCache("fi_region", "basedata", localConfig);
```
MaxItemSize:最大元素个数。timeout:超时时间秒,一个cache中所有元素的超时时间相同,不能单独设定。
缓存服务
# 1 简介cache是提高系统性能的重要设施,越靠近用户的缓存命中,请求链越短,响应越快,效率越高,对后端系统压力越小。它对系统整体性...
点击下载文档
本文2024-09-23 00:28:12发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139663.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章