开发者社区> 问答> 正文

redis如何存储?

如我有20个国家的人口信息,每个国家暂且算1000人,总数据2W左右,在放缓存时:
A:
redis.put('一个总key', 2w的人口数据,比如都放在一个map里)
B:
redis.put('一个人的key', 一个人的信息)
redis.put('一个人的key', 一个人的信息)
redis.put('一个人的key', 一个人的信息)
...
redis.put('一个人的key', 一个人的信息)
(放2W个key-value)

那么来个人后,我要查询redis,哪种比较好呢?

展开
收起
李博 bluemind 2019-04-09 12:41:04 1947 0
1 条回答
写回答
取消 提交回答
  • 云栖社区Java、Redis、MongoDB运营小编,有意合作请联系钉钉:15810436147

    B的方法虽然比较简单暴力。但是键不易管理。除非你redis服务器仅仅是只存这些信息。
    我推荐用散列,跟你A的想法有点类似
    //set(键,键的属性,值)
    //get(键,键的属性)
    redis.hset('Map','first_name','personinfo');
    redis.hset('Map','second_name','personinfo');
    redis.hset('Map','third_name','personinfo');
    ......
    散列的好处是可以一直对键加上新的属性,我们暂且这么认为。
    这个问题场景,我们可以把一个用户当成是一个属性。
    属性的上限是2^32 -1,不用担心数量问题。
    还有查找键的某个属性复杂度也是O(1),效率也不用去担心。
    redis.hgetall('Map')这个还可以取出所有用户的数据,更好管理。

    大概思路是如此,可能我们语言用不一样,存取数据的函数名会有点差异,你参考一下

    2019-07-17 23:32:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis集群演化的心路历程——从2.x到3.0时代 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载