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

redis 存储用户信息哪种方式比较好呢?

  •  
  •   mentalidade · Apr 28, 2018 · 8288 views
    This topic created in 2937 days ago, the information mentioned may be changed or developed.

    存储 key-value 对, 1.唯一的 id 作为 key,value 里面存储一个 json:{"user_name":"aaa","user_phone","11111111","user_img":"http://asdas"},这种方式,还是

    2.id+user_name为 key,value 存储对应的值。

    那种方式好呢?

    22 replies    2018-04-28 16:45:54 +08:00
    victorzheng
        1
    victorzheng  
       Apr 28, 2018
    目的是做缓存,还是就是把 redis 做存储呢?
    1、做缓存的话,直接 string 类型,key-value 就行了
    2、做存储的话,可以用 hash,string 都可以,但是注意并发修改是会覆盖的
    mentalidade
        2
    mentalidade  
    OP
       Apr 28, 2018
    @victorzheng #1 做缓存的,直接一个 id 为 key 的话,用户的整体信息作为 value,感觉这个 value 就有点打
    nullcc
        3
    nullcc  
       Apr 28, 2018
    看你查询时的场景,如果都能用 unique id 就不需要加上 user_name 了
    nullcc
        4
    nullcc  
       Apr 28, 2018
    可以考虑筛选一些必要的 user attr 放进去,不一定要全部扔进去
    owenliang
        5
    owenliang  
       Apr 28, 2018
    应该是 hash 结构吧。
    mentalidade
        6
    mentalidade  
    OP
       Apr 28, 2018
    @nullcc #4 明白。谢谢
    mentalidade
        7
    mentalidade  
    OP
       Apr 28, 2018
    @owenliang #5 redis 是二级缓存,还有一层缓存,结构只能 key-value 对
    owenliang
        8
    owenliang  
       Apr 28, 2018
    @mentalidade what ?我只是说 value 部分应该用 hash。
    reexamine
        9
    reexamine  
       Apr 28, 2018   ❤️ 3
    阿里云 redis 开发规范 可以了解下 https://yq.aliyun.com/articles/531067
    flyingghost
        10
    flyingghost  
       Apr 28, 2018
    说实话很多业务场景入参可能只有 userid 吧。。。要想知道 username 还得特意去查一下。
    alexnevsky
        11
    alexnevsky  
       Apr 28, 2018
    用 string 不觉得浪费吗? hash 更合适吧
    alexnevsky
        12
    alexnevsky  
       Apr 28, 2018
    id 唯一就只用 id,
    netlxl
        14
    netlxl  
       Apr 28, 2018 via Android
    存储等量信息,你的两种方式,存储空间第二种之多不少,key 更占空间。用什么做 key,取决于你的程序需要什么。第二种方式在只有 id 的时候是拿不到缓存的。
    netlxl
        15
    netlxl  
       Apr 28, 2018 via Android
    @alexnevsky 如果只是 key-对象的存储,hash 不合适,string 也没浪费多少。拿 redis 做内存数据库的时候,hash 才有用。
    ms2008
        16
    ms2008  
       Apr 28, 2018
    hash 妥妥的,怼一个 json 进去既浪费内存,又浪费 CPU
    loveCoding
        17
    loveCoding  
       Apr 28, 2018
    hash
    ilyh
        18
    ilyh  
       Apr 28, 2018
    string, hash 没法批量操作啊
    mentalidade
        19
    mentalidade  
    OP
       Apr 28, 2018
    @ms2008 #16 哈希的话就没法在 ngx.share.DICT 里面再缓存一层了
    RorschachZZZ
        20
    RorschachZZZ  
       Apr 28, 2018
    hash 爆内存是最不能接受的。
    lovedebug
        21
    lovedebug  
       Apr 28, 2018   ❤️ 1
    尽量保持原始数据格式,不要随便为原始数据加格式。
    否则后面由新需求或者修改数据会非常麻烦,migration 更痛苦
    onedayonecode
        22
    onedayonecode  
       Apr 28, 2018
    hash 可以直接存数组,不用转
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1252 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 85ms · UTC 17:35 · PVG 01:35 · LAX 10:35 · JFK 13:35
    ♥ Do have faith in what you're doing.