开发者社区> 问答> 正文

Redis存储用户中心会话数据的问题

落地花开啦 2016-02-06 15:09:36 1113

设计一个用户中心系统,考虑到会话票据经常读取,想用Redis来存储,目前有两种想法:

Jedis jedis = new Jedis("localhost"); 
//方案一
HashMap<String,String> userInfo = new HashMap<String,String>();
userInfo.put("uid", "123456");
userInfo.put("user", "MyUserName");
userInfo.put("nick", "MyNickName");
jedis.hmset("TICKET-ABCDEFG", userInfo); 
//方案二
jedis.set("TICKET-ABCDEFG:uid", "123456");
jedis.set("TICKET-ABCDEFG:user", "MyUserName");
jedis.set("TICKET-ABCDEFG:nick", "MyNickName"); 

请各位大大指点。谢谢啦。

存储 NoSQL Java Redis
分享到
取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 18:38:24

    各有优缺点
    方案二可以只按get("TICKET-ABCDEFG:xxx") 读取一条,如果只需要修改其中的一条属性也可以set("TICKET-ABCDEFG:xxx") 操作简单,读取数据量小,但是要TICKET-ABCDEFG下的所有属性值,就需要操作多次,如果属性比较多的时候,操作的次数相应增加,并发性能对应下降,这就是这种方式的缺点;
    方案一hmget("TICKET-ABCDEFG")就可以把TICKET-ABCDEFG的所有属性取到一个HashMap中,读取整个属性信息相对方案二较快,但是如修改其中一个值,从新hmset回去的时候要把整个HashMap重新set回去,这就是第一种方式的缺点;
    你可以做个测试试一下

    0 0
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题