惊了 redis 还能这样玩??

2018-05-07 18:39:19 +08:00
 johnsneakers
接手新项目,那个程序把 hash 当 MySQL 来用,给我说他们以前项目都这样搞。具体是:所有玩家的个人信息放在 user 这个 key 里面,hset user 10000 用户个人信息 json。 第一次见这样玩的 ,我太菜了,怎么给对方说都不听。
19343 次点击
所在节点    Redis
111 条回复
th00000
2018-05-08 19:54:01 +08:00
翻页
laudukang
2018-05-08 21:00:44 +08:00
还以为是新技能
wpzero
2018-05-08 23:16:38 +08:00
@ darklowly 我赞同的,没感觉有啥问题。
cokyhe
2018-05-09 07:41:09 +08:00
看大家回复的内容,深深地觉得 redis 真是好东西啊
alcarl
2018-05-09 07:48:20 +08:00
mysql 都可以这样玩的,redis 当然也可以
yufpga
2018-05-09 09:20:41 +08:00
这么做是有原因的,首先一个好处就是节省内存,hash 这种结构会对内部数据进行压缩,因此能够有效的降低内存,另外好管理,清晰啊。另外 100 万个 key 放一个 hash 表算什么,再加一个数量级也不是什么事,而且别人也是这么干的。另外你的一个 key,value 确实不能太大, 但那不是只针对 hash 这种结构, 再说了你的一个 key,value 能超过 100k 么?
yufpga
2018-05-09 09:40:53 +08:00
redis 本身是单进程单线程的,针对“线上同时来几万人也都是操作这一个 key ”这个说法, 换成你那种做法也不会有什么优化。
wayslog
2018-05-09 10:43:40 +08:00
刚看到这个描述的时候,身为我厂 Redis 维护人员的我心中一惊。尤其在集群模式下,单节点热 key、大 key 是一个非常难治理的行为。我们与之做了很多艰苦的斗争。但是后来想想,楼主提的例子上可能是有原因的,历史原因或者什么的???
其实如果是非集群模式下,即使把 key 拆散也只是一个节点在接受请求,而不拆反而会节省内存,这一点大家说的都比较明白了。

但是,如果有一天天上掉馅饼各位的业务量暴增,这个地方几乎是 100%会成为瓶颈,而且无法通过增加 Redis 节点的方式简单的解决。所以楼上各位在写代码的时候就不看扩展性只注重功能性的么?
wizardoz
2018-05-09 13:37:47 +08:00
为什么是当 MySQL 用而不是当 PostgreSQL 用?
fcten
2018-05-09 13:57:08 +08:00
热 key、大 key 容易造成单点问题。但是既然“他们以前项目都这样搞”,那就说明业务量达不到性能瓶颈,根据不要过早优化的原则,这么做也没太大问题。
ioth
2018-05-10 11:06:55 +08:00
@ylcc 你嘴真脏。
我在这行 26 年,你这样的混不出什么人样的。

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

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

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

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

© 2021 V2EX