Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构。
将 java 对象 --> 转为 散列存储 , 每个独立的键 对应一个 java对象, 属性和值 作为散列结构 放在java对象中 , 相当于 外层大键key 可以获取这个对象 , 内层小键field 可以获取这个对象的指定属性的值
案例教学 :
- 我们需要先将 这个 UserDTO对象 转换为 HashMap , HashMap里面就是 n 对 (属性hk : 值hv) , hk就是hashkey或者说field , hv就是 hashvalue或者说value
- 这里的beanToMap方法就是将(1.改造对象 , 2.目标对象类型 , 3.改造选项) 传入内部 , 3.改造选项 : ①设置忽视空值②设置field和value的编辑选项 : 传入lambda表达式将 value转为String类型(因为原来的Bean对象的属性的值 是不同类型的, 保存进hash结构 必须要是字符串才行
- 操作 opsForHash()的putAll()方法 , 将 自定义的 外部key传入 , 再传 我们的HashMap对象
//7.2.将User转为HashMap存储
UserDTO userDTO = BeanUtil.copyProperties(user, UserDTO.class);// User==>UserDTO
Map<String, Object> userMap = BeanUtil.beanToMap(userDTO,new HashMap<>(),
CopyOptions.create()
.setIgnoreNullValue(true)
.setFieldValueEditor((fieldName,fieldValue)-> fieldValue.toString())
);//UserDTO对象的各个属性,都转为hash结构
//7.3.存储到redis
String tokenKey= LOGIN_USER_KEY + token;//前缀是 login:token:
stringRedisTemplate.opsForHash().putAll(tokenKey,userMap);
看源码真的一目了然 啊 !!!!!!!
- 这样就构造好了一个 Redis的数据类型存进redis了 , 左边蓝色的是key , 右边是三行 hk - hv