如果一个 hash 里有上 10 万的 field,性能会有影响吧?

2015-01-13 00:52:17 +08:00
 ry_wang
想用redis给监控做各个监控项last status的cache,几千台机器,就拿硬盘来说,平均一个机器10个硬盘,那就是几万个field,hadh扛得住么?
6124 次点击
所在节点    Redis
11 条回复
pragbyte
2015-01-13 01:16:41 +08:00
多建立 hash,而不是一个 hash 里面很多 field
surefire
2015-01-13 07:47:38 +08:00
几万个就扛不住了吗,测试下就知道了 。扛不住就降低负载因子
cattail
2015-01-13 07:58:32 +08:00
hash大小不影响时间复杂度。hash function才是
piglei
2015-01-13 09:13:50 +08:00
Redis hash一个存几万个印象中是没有一点问题的。
tabris17
2015-01-13 09:29:38 +08:00
同意一楼
soli
2015-01-13 10:19:11 +08:00
@pragbyte 多hash 和 一 hash 多 field 似乎差不多的性能。hash 和 field 的实现方式是一样的。
andyzhshg
2015-01-13 10:56:01 +08:00
10万小case吧...
zhicheng
2015-01-13 13:08:29 +08:00
redis 不知道,但下面是我司研发的 hash dbm,一千万笔记录的 bench ,16字节的 Key, 128字节的Value
基于磁盘,如果对于 redis 那种内存的话,理论上性能应该比这个高10倍左右。

# ./db-bench bench.db bench.db 10000000
write: 41.815 MB/s
write: 304488.156 Keys/s
read: 145.260 MB/s
read: 1057753.250 Keys/s
ry_wang
2015-01-13 13:45:08 +08:00
@zhicheng 刚刚测试了一下,12W的field,写入不到2秒,读取基本1秒,做web的后端缓存应该是足够了。
ry_wang
2015-01-13 13:48:41 +08:00
@pragbyte 本来的设计是监控项加SN作为hash key的,但是这样遍历查询就很麻烦,还要单独维护一个SN列表。感觉没有监控项为hash key,sn为filed简单。
pragbyte
2015-01-13 19:03:22 +08:00
@ry_wang 我觉得你的需求不如用 mongo

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

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

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

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

© 2021 V2EX