有一个需求需要把集合写到缓存,提高访问速度,刚开始觉得可以把集合转成json直接作为value写到缓存里面,因为数据不是很多。晚上回去看了看redis的数据类型,发现hash的用法正好符合这个需求,可以支持单个key更新和新增。
主要需要三个方法,
1. 初始化缓存,把map写入缓存。map 的value可以把对象转化成json
/**
* HashSet
* @param key 键
* @param map 对应多个键值
*/
public boolean hmset(String key, Map<String, Object> map) {
try {
template.opsForHash().putAll(key, map);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
2. 单个key写入缓存
/**
* 向一张hash表中放入数据,如果不存在将创建
* @param key 键
* @param item 项
* @param value 值
* @return true 成功 false失败
*/
public boolean hset(String key, String item, Object value) {
try {
template.opsForHash().put(key, item, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
3.通过key返回map,然后再对map循环写入集合
/**
* 获取hashKey对应的所有键值
* @param key 键
* @return 对应的多个键值
*/
public Map<Object, Object> hmget(String key) {
return template.opsForHash().entries(key);
}
|