redis java 存储图片_【java】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,哪种比较好呢?

回答

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’)这个还可以取出所有用户的数据,更好管理。

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

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

怎么叫好呢?

如果是不计任何附加问题,只考虑快的话,那么用B好

如果是要考虑其他的问题,我也不会用A,这不是redis的长处,而且才2W的数据,就算很频繁也不会有什么问题。

好吧,本来我想分开说说A和B的长处和不同的使用,但实在是想不出为啥会用A。

你有解决用散列后,查询的问题呢?尤其是多条件的查询!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值