关于向redis中存储数据的问题

最近刚换了一家公司,看了下公司Java后台代码中关于redis存储数据的代码,里面是这样写的:

public void setAttribute(Object key,Object value){
        redisTemplate.opsForHash().put(SessionUtil.getToken(),key,value);
    }

但是这种写法,一般是不建议去这样写的。因为在存储哈希的时候,会将

{
    id:"0001",
    name:"ande",
    position:{
        lat:113.88988,
        lon:257289
    }
}

这种数据转化为

{
    id:"0001",
    name:"ande",
    position:[object,object]
    
}

这种格式,当然在取出来的时候就会造成转为实体类的麻烦。
Redis中的哈希不是用来存储临时数据的,想要存储数据还是要用redis的String类型,不然在取数据转化为实体类的时候会报错。将String存入进去可以保证存进去的什么样子,取出来之后还是什么样子。因此在实际的开发过程中,如果想将一个实体类的json形式存储到redis中,一般要这样写:

redisTemplate.opsForValue().set(redisKey, JSON.toJSONString(vvModel, SerializerFeature.DisableCircularReferenceDetect), 1, TimeUnit.DAYS);

然后取出数据的时候,一般来这样取:

String redisStr = stringRedisTemplate.opsForValue().get(redisKey);

如果还想将这个取出来的String转化为我们想要的实体类,可以使用

VendorVideoModel vvModel = JSON.parseObject(redisStr, VendorVideoModel.class);

这样写。

注意:我用的是com.alibaba.fastjson的JSON类去进行String和实体类转化的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值