通常情况下在可以用 hash 的情况下,也可以用 string 。
这里对 hash 与 string 之间的取舍还不太清楚, 想听听大家的意见。
1
xuanbg 2021-03-02 10:57:38 +08:00
hash 相当于 map
|
2
awanganddong OP 就比如用户信息,我可以存 string,也可以存 hash 。
这之间的取舍,还不太清晰。 |
3
rrfeng 2021-03-02 11:18:31 +08:00
一组数据如果有同时获取的需求,那么就用 hash 。如果没有,hash 和 string 基本一样。因为有 hgetall
|
4
Leviathann 2021-03-02 11:34:00 +08:00 via iPhone
hash 里的元素好像不能设置 ttl
|
5
jiurenmeng 2021-03-02 11:38:49 +08:00
hash 可以设置键里面的一个值或多个值单独更新,string 更新的是整个,数据结构也不一样
|
6
monsterxx03 2021-03-02 12:02:22 +08:00
就用户信息这个 case, 不需要 ttl.
如果内存占用问不是问题, 建议用 string. 减少内存是你的头号问题, 考虑用 hash, key 的 overhead 更少. hash 问题是如果以后迁移到 redis cluster, 所有 key 会在一个 slot 里, 分布不均匀 |
7
awanganddong OP 比如 hash 保存用户信息,以前帖子有提示容易做成热 key 和大 value 。这个大 value 指的是 hash 里边所有的值呢,还是单纯的 key field
|
8
Edward4074 2021-03-02 14:13:57 +08:00
场景 1,实体转化为 hash 存储,优点是可以对某个字段进行更新、原子加等才做
|
9
caola 2021-03-02 14:18:04 +08:00
hash 有 zipList 会比 string 占用更少的内存
|
10
Edward4074 2021-03-02 14:49:07 +08:00
场景 1,实体转化为 hash 存储,优点是可以对某个字段进行更新、原子加等操作
场景 2,针对某个信息存储多个维度值。比如某个帖子,用户是否已点赞,则 field=userId,value=bool |