• 请不要在回答技术问题时复制粘贴 AI 生成的内容
brader
V2EX  ›  程序员

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

  •  
  •   brader · May 12, 2022 · 1948 views
    This topic created in 1635 days ago, the information mentioned may be changed or developed.

    有时候有一批业务,会在 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 replies  •  2022-05-16 19:25:55 +08:00
    keaidian
    keaidian
    May 12, 2022
    1
    这种情况肯定用 Hash 好啊
    brader
    brader
    OP
    May 12, 2022
    2
    @keaidian 看起来也是,就是别人问我为什么的时候答不上来
    skidoo34
    skidoo34
    May 12, 2022
    3
    Hash 里的 Entry 如果太多要记得拆分 否则会有 big key 问题
    keaidian
    keaidian
    May 12, 2022
    4
    @keaidian 后续维护方便,可以统一设置过期时间,统一删除
    brader
    brader
    OP
    May 12, 2022
    5
    @keaidian 这是一个亮点,get
    MoYi123
    MoYi123
    May 12, 2022❤️1
    6
    用 string 不能快速 count
    用 hash 不能单独设过期时间

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

    没有绝对的好坏, 看场景
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5557 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 02:05 · PVG 10:05 · LAX 18:05 · JFK 21:05
    ♥ Do have faith in what you're doing.