V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ry_wang
V2EX  ›  Redis

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

  •  
  •   ry_wang ·
    saipanno · 2015-01-13 00:52:17 +08:00 via iPad · 6149 次点击
    这是一个创建于 3628 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想用redis给监控做各个监控项last status的cache,几千台机器,就拿硬盘来说,平均一个机器10个硬盘,那就是几万个field,hadh扛得住么?
    11 条回复    2015-01-13 19:03:22 +08:00
    pragbyte
        1
    pragbyte  
       2015-01-13 01:16:41 +08:00
    多建立 hash,而不是一个 hash 里面很多 field
    surefire
        2
    surefire  
       2015-01-13 07:47:38 +08:00 via Android
    几万个就扛不住了吗,测试下就知道了 。扛不住就降低负载因子
    cattail
        3
    cattail  
       2015-01-13 07:58:32 +08:00 via iPhone
    hash大小不影响时间复杂度。hash function才是
    piglei
        4
    piglei  
       2015-01-13 09:13:50 +08:00
    Redis hash一个存几万个印象中是没有一点问题的。
    tabris17
        5
    tabris17  
       2015-01-13 09:29:38 +08:00
    同意一楼
    soli
        6
    soli  
       2015-01-13 10:19:11 +08:00
    @pragbyte 多hash 和 一 hash 多 field 似乎差不多的性能。hash 和 field 的实现方式是一样的。
    andyzhshg
        7
    andyzhshg  
       2015-01-13 10:56:01 +08:00
    10万小case吧...
    zhicheng
        8
    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
        9
    ry_wang  
    OP
       2015-01-13 13:45:08 +08:00
    @zhicheng 刚刚测试了一下,12W的field,写入不到2秒,读取基本1秒,做web的后端缓存应该是足够了。
    ry_wang
        10
    ry_wang  
    OP
       2015-01-13 13:48:41 +08:00
    @pragbyte 本来的设计是监控项加SN作为hash key的,但是这样遍历查询就很麻烦,还要单独维护一个SN列表。感觉没有监控项为hash key,sn为filed简单。
    pragbyte
        11
    pragbyte  
       2015-01-13 19:03:22 +08:00
    @ry_wang 我觉得你的需求不如用 mongo
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:35 · PVG 08:35 · LAX 16:35 · JFK 19:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.