神甫 发表于 2018-11-2 13:15:40

spring boot构建基础版web项目(三)-springboot、redis数据缓存整合

@Component  @Slf4j

  public>  @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]
查看完整版本: spring boot构建基础版web项目(三)-springboot、redis数据缓存整合