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

2018-04-28 10:15:56 +08:00
 mentalidade

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

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

那种方式好呢?

7354 次点击
所在节点    程序员
22 条回复
victorzheng
2018-04-28 10:22:07 +08:00
目的是做缓存,还是就是把 redis 做存储呢?
1、做缓存的话,直接 string 类型,key-value 就行了
2、做存储的话,可以用 hash,string 都可以,但是注意并发修改是会覆盖的
mentalidade
2018-04-28 10:34:16 +08:00
@victorzheng #1 做缓存的,直接一个 id 为 key 的话,用户的整体信息作为 value,感觉这个 value 就有点打
nullcc
2018-04-28 10:35:24 +08:00
看你查询时的场景,如果都能用 unique id 就不需要加上 user_name 了
nullcc
2018-04-28 10:36:56 +08:00
可以考虑筛选一些必要的 user attr 放进去,不一定要全部扔进去
owenliang
2018-04-28 10:50:35 +08:00
应该是 hash 结构吧。
mentalidade
2018-04-28 10:51:22 +08:00
@nullcc #4 明白。谢谢
mentalidade
2018-04-28 10:52:13 +08:00
@owenliang #5 redis 是二级缓存,还有一层缓存,结构只能 key-value 对
owenliang
2018-04-28 11:10:01 +08:00
@mentalidade what ?我只是说 value 部分应该用 hash。
liyaojian
2018-04-28 11:35:29 +08:00
阿里云 redis 开发规范 可以了解下 https://yq.aliyun.com/articles/531067
flyingghost
2018-04-28 12:01:52 +08:00
说实话很多业务场景入参可能只有 userid 吧。。。要想知道 username 还得特意去查一下。
alexnevsky
2018-04-28 12:14:37 +08:00
用 string 不觉得浪费吗? hash 更合适吧
alexnevsky
2018-04-28 12:16:45 +08:00
id 唯一就只用 id,
kingwrcy
2018-04-28 12:47:08 +08:00
hash
netlxl
2018-04-28 13:04:43 +08:00
存储等量信息,你的两种方式,存储空间第二种之多不少,key 更占空间。用什么做 key,取决于你的程序需要什么。第二种方式在只有 id 的时候是拿不到缓存的。
netlxl
2018-04-28 13:09:21 +08:00
@alexnevsky 如果只是 key-对象的存储,hash 不合适,string 也没浪费多少。拿 redis 做内存数据库的时候,hash 才有用。
ms2008
2018-04-28 13:13:30 +08:00
hash 妥妥的,怼一个 json 进去既浪费内存,又浪费 CPU
loveCoding
2018-04-28 13:30:58 +08:00
hash
ilyh
2018-04-28 14:07:08 +08:00
string, hash 没法批量操作啊
mentalidade
2018-04-28 14:12:04 +08:00
@ms2008 #16 哈希的话就没法在 ngx.share.DICT 里面再缓存一层了
RorschachZZZ
2018-04-28 14:28:40 +08:00
hash 爆内存是最不能接受的。

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

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

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

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

© 2021 V2EX