关于向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和实体类转化的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容