1、stringRedisTemplate 它的key和Value的序列化方式默认就是String类型
2、stringRedisTemplate 操作Hash时:
2.1 添加数据 ,在实体转换为HashMap需要将对象字段的值转为String( 使用StringRedisTemplateredis
需要转换成的map的各个字段都是String类型),eg:
Map<String, Object> userMap = BeanUtil.beanToMap(userDTO,new HashMap<>(),
CopyOptions.create()
.setIgnoreNullValue(true)
.setFieldValueEditor((fieldName,fieldValue)->fieldValue.toString()));
stringRedisTemplate.opsForHash().putAll(LOGIN_USER_KEY + token,userMap);
2.1.1 Hutool工具包的BeanUtil的beanToMap方法------空指针的问题 https://i.cnblogs.com/posts/edit;postId=17077647 修改为:
Map<String, Object> map = BeanUtil.beanToMap(dbShop,new HashMap<>(),
CopyOptions.create()
.setIgnoreNullValue(true)
.setFieldValueEditor((fieldName,fieldValue) -> {
if (fieldValue == null){
fieldValue = "0";
}else {
fieldValue = fieldValue.toString();
}
return fieldValue;
}));
stringRedisTemplate.opsForHash().putAll(CACHE_SHOP_KEY + id, map);
2.2 获取数据,
2.2.1使用entries获取hashMap 的所有键值对
Map<Object, Object> userMap = stringRedisTemplate.opsForHash().entries(RedisConstants.LOGIN_USER_KEY + token);
2.2.2使用entries获取hashMap 的一个key 的键值对
Object o = stringRedisTemplate.opsForHash().get(CACHE_SHOP_KEY + id, "name");