spring boot构建基础版web项目(三)-springboot、redis数据缓存整合
@Component @Slf4jpublic> @Autowired
RedisTemplate redisTemplate;
/**
* 键值对设值
*
* @param key 键
* @param value 值
* @return
*/
publicBoolean set(K key, V value) {
return redisTemplate.execute((RedisCallback) connection -> {
connection.set(JSON.toJSONBytes(key), JSON.toJSONBytes(value));
return true;
});
}
/**
* 键值对设值和有效时间
*
* @param key 键
* @param value 值
* @param time有效时间(单位:秒)
* @return
*/
publicBoolean setEx(K key, V value, long time) {
return redisTemplate.execute((RedisCallback) connection -> {
connection.setEx(JSON.toJSONBytes(key), time, JSON.toJSONBytes(value));
return true;
});
}
/**
* 查询键值对
*
* @param key 键
* @param typeReference 返回类型
* @param 键类型
* @param 返回类型
* @return
*/
publicR get(K key, TypeReference typeReference) {
byte[] redisValue = redisTemplate.execute((RedisCallback) connection -> connection.get(JSON.toJSONBytes(key)));
if (redisValue == null) return null;
return JSONObject.parseObject(new String(redisValue), typeReference);
}
/**
* 存储Hash结构数据(批量)
*
* @param outerKey 外键
* @param map 内键-内值
* @return
*/
publicBoolean hSetMap(O outerKey, Map map) {
if (map == null || map.isEmpty()) return false;
Map byteMap = new HashMap();
map.forEach((innerKey, innerValue) -> byteMap.put(JSON.toJSONBytes(innerKey), JSON.toJSONBytes(innerValue)));
return redisTemplate.execute((RedisCallback) connection -> {
connection.hMSet(JSON.toJSONBytes(outerKey), byteMap);
return true;
});
}
/**
* 存储Hash结构数据
*
* @param outerKey 外键
* @param innerKey 内键
* @param innerValue 值
* @return
*/
publicBoolean hSet(O outerKey, I innerKey, V innerValue) {
Map map = new HashMap();
map.put(innerKey, innerValue);
return this.hSetMap(outerKey, map);
}
/**
* 获取Hash结构Map集合,内键和内值键值对封装成Map集合
*
* @param outerKey 外键
* @param innerKeyType 内键类型
* @param innerValueType 值类型
* @return
*/
publicMap hGetMap(O outerKey, TypeReference innerKeyType, TypeReference innerValueType) {
Map redisMap = redisTemplate.execute
((RedisCallback) connection -> connection.hGetAll(JSON.toJSONBytes(outerKey)));
if (redisMap == null) return null;
Map resultMap = new HashMap();
redisMap.forEach((key, value) -> resultMap.put(JSONObject.parseObject
(new String(key), innerKeyType), JSONObject.parseObject(new String(value), innerValueType)));
return resultMap;
}
/**
* 查询Hash结构的值
*
* @param outerKey 外键
* @param innerKey 内键
* @param typeReference 值类型
* @return
*/
publicV hGet(O outerKey, I innerKey, TypeReference typeReference) {
byte[] redisResult = redisTemplate.execute((RedisCallback)
connection -> connection.hGet(JSON.toJSONBytes(outerKey), JSON.toJSONBytes(innerKey)));
if (redisResult == null) return null;
return JSONObject.parseObject(new String(redisResult), typeReference);
}
/**
* 删除键值对
*
* @param keys 键
* @return
*/
publicLong del(List keys) {
if (keys == null || keys.isEmpty()) return 0L;
byte[][] keyBytes = new byte[];
int index = 0;
for (K key : keys) {
keyBytes = JSON.toJSONBytes(key);
index++;
}
return redisTemplate.execute((RedisCallback) connection -> connection.del(keyBytes));
}
/**
* 删除Hash结构内键和值
*
* @param outerKey外键
* @param innerKeys 内键
* @return
*/
publicLong hDel(O outerKey, List innerKeys) {
if (innerKeys == null || innerKeys.isEmpty()) return 0L;
byte[][] innerKeyBytes = new byte[];
int index = 0;
for (I key : innerKeys) {
innerKeyBytes = JSON.toJSONBytes(key);
index++;
}
return redisTemplate.execute((RedisCallback) connection ->
connection.hDel(JSON.toJSONBytes(outerKey), innerKeyBytes));
}
}
页:
[1]