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

关于遇到的 redis 的 string 和 hash 问题

  •  
  •   brader · 2022-05-12 15:38:32 +08:00 · 1201 次点击
    这是一个创建于 926 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有时候有一批业务,会在 redis 存一些键值对,如: key_uid = xxx (这里的 uid 是用户 id ,不会重复,需要形成缓存的用户还不少)

    下面分别是使用 string 和 hash 的存法的一些示例:

    String:
    SET key_001 xxx
    SET key_002 xxx
    SET key_003 xxx
    ...

    Hash:
    HSET key 001 xxx
    HSET key 002 xxx
    HSET key 003 xxx
    ...

    其实这两种都是能满足业务需要的,具体我也说不上来哪种做法好,但是我觉得类似这种业务,会产生很多 key 的话,还是用 Hash 好点,起码不会我一打开 redis 软件看到一大堆 key 头晕。 大家知道这种正经应该用哪个吗?

    10 条回复    2022-05-16 19:25:55 +08:00
    keaidian
        1
    keaidian  
       2022-05-12 15:47:20 +08:00
    这种情况肯定用 Hash 好啊
    brader
        2
    brader  
    OP
       2022-05-12 15:50:18 +08:00
    @keaidian 看起来也是,就是别人问我为什么的时候答不上来
    skidoo34
        3
    skidoo34  
       2022-05-12 15:50:39 +08:00
    Hash 里的 Entry 如果太多要记得拆分 否则会有 big key 问题
    keaidian
        4
    keaidian  
       2022-05-12 15:50:48 +08:00
    @keaidian 后续维护方便,可以统一设置过期时间,统一删除
    brader
        5
    brader  
    OP
       2022-05-12 15:53:16 +08:00
    @keaidian 这是一个亮点,get
    MoYi123
        6
    MoYi123  
       2022-05-12 15:53:20 +08:00   ❤️ 1
    用 string 不能快速 count
    用 hash 不能单独设过期时间

    不需要考虑 一大堆 key 头晕的问题
    看你的需求来
    brader
        7
    brader  
    OP
       2022-05-12 15:54:36 +08:00
    @skidoo34 想请教下,大量的 key 在 Hash 里会有 big key 问题,那同样的大量的 key 在 string 就没有这个问题存在吗
    lddsb
        8
    lddsb  
       2022-05-12 16:41:23 +08:00
    string 每个鸡蛋一个篮子
    hash 所有鸡蛋在一个篮子
    ediron
        9
    ediron  
       2022-05-12 16:51:27 +08:00
    楼上老哥们都说的很在理
    veightz
        10
    veightz  
       2022-05-16 19:25:55 +08:00
    楼上老哥们都说的很在理;

    没有绝对的好坏, 看场景
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1114 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:41 · PVG 02:41 · LAX 10:41 · JFK 13:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.