redis hash 与 string 适用场景

2021-03-02 10:54:47 +08:00
 awanganddong

通常情况下在可以用 hash 的情况下,也可以用 string 。

这里对 hash 与 string 之间的取舍还不太清楚, 想听听大家的意见。

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/757544

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX