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

是否使用 redis 里的复杂数据结构

  •  
  •   phithon ·
    phith0n · 2015-08-18 11:32:27 +08:00 · 6091 次点击
    这是一个创建于 3381 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近开发一个 python 的扫描器,存储数据使用的 redis
    不过有点纠结,比如我的一个扫描结果是一个 dict

    {"target":"http://xxx/","whois":"[email protected]","real_ip":"127.0.0.1"}
    

    这样的,我是先将他 json 化(或序列化)后以字符串的形式存入 redis 呢,还是使用 redis 内部的 Hashes 数据结构来存呢?
    哪个效率比较高?全局考虑一下。

    9 条回复    2015-10-09 14:43:33 +08:00
    zts1993
        1
    zts1993  
       2015-08-18 11:39:14 +08:00
    存储的话上 mongo 啊

    下面认真回答

    用内部 hash table 可以节约内存
    zts1993
        2
    zts1993  
       2015-08-18 11:40:21 +08:00
    @zts1993 hash 没有 table ,手误
    shiny
        3
    shiny  
       2015-08-18 11:41:20 +08:00
    如果你经常只需要取其中一个字段里的内容,可以考虑用 hash
    tczzjin
        4
    tczzjin  
       2015-08-18 11:46:35 +08:00
    如果你的一个 dict 里面的字段不超过 1W 个,那么整个存到一个 hash 非常好,ziplist,hashmap 等等的效率和内存 redis 内置的优化很赞
    keakon
        5
    keakon  
       2015-08-18 12:17:52 +08:00
    没特殊需求不要用一个 hash 存一个对象,会丢失数据类型,浪费内存。
    est
        6
    est  
       2015-08-18 12:36:32 +08:00
    需要对 hash 里的字段进行查询,修改就用 hash ,如果只是用来保存,整存整取,就存 json 字符串。
    hcymk2
        7
    hcymk2  
       2015-08-18 12:59:21 +08:00
    phithon
        8
    phithon  
    OP
       2015-08-19 17:19:04 +08:00
    @keakon
    @est
    嗯,因为都是整存整取,所以存 json 比较好
    memorycancel
        9
    memorycancel  
       2015-10-09 14:43:33 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3346 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:22 · PVG 20:22 · LAX 04:22 · JFK 07:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.