惊了 redis 还能这样玩??

2018-05-07 18:39:19 +08:00
 johnsneakers
接手新项目,那个程序把 hash 当 MySQL 来用,给我说他们以前项目都这样搞。具体是:所有玩家的个人信息放在 user 这个 key 里面,hset user 10000 用户个人信息 json。 第一次见这样玩的 ,我太菜了,怎么给对方说都不听。
19340 次点击
所在节点    Redis
111 条回复
limitsy
2018-05-08 10:18:49 +08:00
看懂了。。意思就是。hash 作为一张表用?社会社会。。
jyf
2018-05-08 10:20:20 +08:00
这样做其实挺好的 我记得 instgram 还是 flickr 曾经分享过一个心得 是把他们的数据从你那种方式转换成提问里这种方式 内存省了好多好多
另外你没想到这样清理方便么
mentalidade
2018-05-08 10:29:01 +08:00
跟我这个很像,不过我不要哈希,就 key-value,/t/450596
myyou
2018-05-08 10:30:48 +08:00
用 hash 据说可以让内存使用减小到是 string key 的 1/10,而且 hash 的查询速度也很快。现在的 redis 已经很稳定了,架构设计合理,作为很持久化使用,并没有什么不妥。
jyf
2018-05-08 10:31:25 +08:00
OneNian
2018-05-08 10:34:17 +08:00
居然有人觉得一个 hash 这样用很合理,持久化也很合理?……用过 redis 没?
ylcc
2018-05-08 10:38:00 +08:00
@ioth 如果你能提出你的理由那是合理反驳,如果你不加最后一句,我会把你当个人,但是我现在只能当你是条狗
tylerdurden
2018-05-08 10:39:11 +08:00
既然都是程序员,咱们数据说话好不好,来个对比呗,不要臆断可以么
changnet
2018-05-08 10:43:32 +08:00
@johnsneakers 没说这是最好的方案啊,具体业务不知道,你们项目成员经验也不知道,不好说。通常都是 redis 做缓存,后面 mysql 落地。一个 key 的问题,这个设计有点奇怪,一般都是分开的吧。
youxiachai
2018-05-08 10:45:55 +08:00
@changnet redis 其实也能做落地...
人家实践过.应该是信得过,redis 的落地
gotanaka4869
2018-05-08 10:48:40 +08:00
changnet
2018-05-08 10:49:24 +08:00
@youxiachai 是能做落地。但是实际操作起来团队的经验不够,运维的经验不够,容灾不如 mysql 成熟,不好做。还要考虑后续优化,维护啊。
youxiachai
2018-05-08 10:49:56 +08:00
nooper
2018-05-08 10:50:23 +08:00
9684xtpa
2018-05-08 10:51:06 +08:00
不过如果是集群的话,这么做会导致热点 key,然后并发高的话,会有问题的
imherer
2018-05-08 10:58:00 +08:00
这样做应该也没什么大问题吧
不过我的做法和你一样,也是一个 user 一个 key
youxiachai
2018-05-08 10:58:48 +08:00
看了一下...instagram 那篇文章居然是 2011 年的....
一些...大厂的博客..还是值得去翻翻啊..
youxiachai
2018-05-08 11:06:57 +08:00
@ylcc 其实..instagram .. 2011 年就分享过这样的操作了......
darklowly
2018-05-08 11:08:01 +08:00
假设按照
users:id 的模式存储
那么 id 为 10000 的用户的存储 key 是:
users:10000,key 大概需要 11 个字节
同时 id 为 10001 的用户的存储 key 是:
users:10001,key 大概需要 11 个字节

如果是按照 hash 来存储
则两个用户,一共需要 len(users) + len(10000) + len(10001) = 5 + 5 + 5 = 15 个字节
依此类推。


@9684xtpa

如果是集群的话,
给 user 分片就可以了,例如 users_1,users_2
jwdstefani
2018-05-08 11:10:16 +08:00
这种玩法 直接上 mongo 啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/452861

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX