设计一个用户中心系统,考虑到会话票据经常读取,想用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");
请各位大大指点。谢谢啦。
各有优缺点
方案二可以只按get("TICKET-ABCDEFG:xxx") 读取一条,如果只需要修改其中的一条属性也可以set("TICKET-ABCDEFG:xxx") 操作简单,读取数据量小,但是要TICKET-ABCDEFG下的所有属性值,就需要操作多次,如果属性比较多的时候,操作的次数相应增加,并发性能对应下降,这就是这种方式的缺点;
方案一hmget("TICKET-ABCDEFG")就可以把TICKET-ABCDEFG的所有属性取到一个HashMap中,读取整个属性信息相对方案二较快,但是如修改其中一个值,从新hmset回去的时候要把整个HashMap重新set回去,这就是第一种方式的缺点;
你可以做个测试试一下
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。