缓存工具使用
缓存工具主要解决有些配置需要根据实际情况进行动态修改,然后立即生效。
[warning] 目前只结合了
wueasy admin
使用,可以在系统参数中配置
客户端使用
引入工具包
<dependency>
<groupId>com.wueasy</groupId>
<artifactId>wueasy-cache</artifactId>
<version>最新版本</version>
</dependency>
工具接口
缓存工具包:com.wueasy.cache.util.ParameterHelper
/**
* 获取系统参数值
* @author: fallsea
* @param name 名称(类型编号.属性名称)
* @return
*/
public static String getString(String name)
/**
* 获取系统参数值
* @author: fallsea
* @param name 名称(类型编号.属性名称)
* @param defaultValue 默认值
* @return
*/
public static String getString(String name,String defaultValue)
/**
* 获取系统参数值
* @author: fallsea
* @param name 名称(类型编号.属性名称)
* @return
*/
public static int getInt(String name)
/**
* 获取系统参数值
* @author: fallsea
* @param name 名称(类型编号.属性名称)
* @param defaultValue 默认值
* @return
*/
public static int getInt(String name,int defaultValue)
集群分组
2.0.0
开始支持[!question] 为什么要使用集群分组?
集群分组主要针对于多个不同产品共用同一个zookeeper
注册中心,每个集群各自使用自己的缓存数据。
需要在每个应用中,配置group
wueasy:
group: test #集群分组
缓存类型修改
2.2.0
版本开始支持。
默认使用zookeeper
方式存储,如果需要使用redis
存储,可以使用以下方式。
修改缓存类型
缓存方式修改为redis
wueasy:
cache:
type: redis
配置redis
必须指定redis
为cache
,默认使用此数据源
wueasy:
data:
redis: #redis配置
cache:
database : 9 #数据库索引(默认为0)
host : 127.0.0.1 #服务器地址
port : 6379 #服务器连接端口
password : 123456 #服务器连接密码(默认为空)
pool : #连接池配置
maxIdle : 8 # 连接池中的最大空闲连接,默认值也是8。
minIdle : 0 #连接池中的最小空闲连接,默认值也是0。
maxTotal : 2000 # 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
maxWaitMillis : 1000 # 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
timeout : 3000 #连接超时时间(毫秒)
服务端处理
默认admin管理系统支持服务端写入,如果想自定处理,可以参考下面方式进行数据写入。
Map<String,String> map = new HashMap<String, String>();
//组装数据
for (Object obj : list) {
String key = obj.getType() + "." + obj.getKey();//组装key
String value = obj.getValue();//值
map.put(key, value);
}
//发布通知更新
if("redis".equals(CacheConstants.CACHE_TYPE)) {
StringRedisTemplate stringRedisTemplate = SpringHelper.getBean(CacheConstants.CACHE_STRING_REDIS_TEMPLATE_BEAN_NAME, StringRedisTemplate.class);
//更新缓存中数据
stringRedisTemplate.opsForValue().set(CacheConstants.PARAMETER_CACHE_REDIS_KEY, JsonHelper.toJsonString(map));
//通知更新
stringRedisTemplate.convertAndSend(CacheConstants.PARAMETER_CACHE_NODE_PATH,"update");
}else {
ZkClient zkClient = ZkHelper.getInstance();
if(!ZkHelper.exists(CacheConstants.PARAMETER_CACHE_NODE_PATH)){
zkClient.createPersistent(CacheConstants.PARAMETER_CACHE_NODE_PATH,true);
}
zkClient.writeData(CacheConstants.PARAMETER_CACHE_NODE_PATH,JsonHelper.toJsonString(map));
}