美文网首页Java程序栈程序员Java Web知识
关于向redis中存储数据的问题

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

作者: 一直想上树的猪 | 来源:发表于2019-01-12 01:50 被阅读12次

最近刚换了一家公司,看了下公司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和实体类转化的。

相关文章

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

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

  • 项目开发Redis分页,缓存问题解决

    Redis缓存存储问题的解决 1.队列存储问题的解决 对于把从数据库中获取的数据存储存储到redis队列时,在刚开...

  • 02-Redis内存划分

    Redis作为内存数据库,在内存中存储的主要内容是数据(键值对) 数据 数据是Redis中存储的主要内容,这部分占...

  • Java面试题集三

    一、Redis分布式存储 Redis:非关系型数据库,Key-Value形势存储,结构灵活;是内存中的数据结构存储...

  • 【Redis缓存】- Redis数据结构、基本命令操作、持久化

    一、Redis 数据结构 要想使用 Redis 进行数据存储,首先需要了解 Redis 的数据结构,redis存储...

  • Redis 客户端基本操作

    Redis 是一个内存数据库,通过 Key-Value 键值对的方式存储数据由于 Redis 的数据都存储在内存中...

  • redis的失效键内部实现机制

    redis关于数据结构的定义: typedef struct redisDb { dict *dict;//存储...

  • Redis持久化

    Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的, 然而当Redis重启后,所有存储在内存中的数据...

  • 数据持久化

    Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的,然而当Redis重启后,所有存储在内存中的数据将...

  • redis简介与安装

    redis使用场景: 1、登录会话存储:存储在redis中,与memcached相比,数据不会丢失。 2、排行版/...

网友评论

    本文标题:关于向redis中存储数据的问题

    本文链接:https://www.haomeiwen.com/subject/wctxdqtx.html