存储 key-value 对,
1.唯一的 id 作为 key,value 里面存储一个 json:{"user_name":"aaa","user_phone","11111111","user_img":"http://asdas"}
,这种方式,还是
2.id+user_name
为 key,value 存储对应的值。
那种方式好呢?
1
victorzheng 2018-04-28 10:22:07 +08:00
目的是做缓存,还是就是把 redis 做存储呢?
1、做缓存的话,直接 string 类型,key-value 就行了 2、做存储的话,可以用 hash,string 都可以,但是注意并发修改是会覆盖的 |
2
mentalidade OP @victorzheng #1 做缓存的,直接一个 id 为 key 的话,用户的整体信息作为 value,感觉这个 value 就有点打
|
3
nullcc 2018-04-28 10:35:24 +08:00
看你查询时的场景,如果都能用 unique id 就不需要加上 user_name 了
|
4
nullcc 2018-04-28 10:36:56 +08:00
可以考虑筛选一些必要的 user attr 放进去,不一定要全部扔进去
|
5
owenliang 2018-04-28 10:50:35 +08:00
应该是 hash 结构吧。
|
6
mentalidade OP @nullcc #4 明白。谢谢
|
7
mentalidade OP @owenliang #5 redis 是二级缓存,还有一层缓存,结构只能 key-value 对
|
8
owenliang 2018-04-28 11:10:01 +08:00
@mentalidade what ?我只是说 value 部分应该用 hash。
|
9
liyaojian 2018-04-28 11:35:29 +08:00 3
阿里云 redis 开发规范 可以了解下 https://yq.aliyun.com/articles/531067
|
10
flyingghost 2018-04-28 12:01:52 +08:00
说实话很多业务场景入参可能只有 userid 吧。。。要想知道 username 还得特意去查一下。
|
11
alexnevsky 2018-04-28 12:14:37 +08:00
用 string 不觉得浪费吗? hash 更合适吧
|
12
alexnevsky 2018-04-28 12:16:45 +08:00
id 唯一就只用 id,
|
14
netlxl 2018-04-28 13:04:43 +08:00 via Android
存储等量信息,你的两种方式,存储空间第二种之多不少,key 更占空间。用什么做 key,取决于你的程序需要什么。第二种方式在只有 id 的时候是拿不到缓存的。
|
15
netlxl 2018-04-28 13:09:21 +08:00 via Android
@alexnevsky 如果只是 key-对象的存储,hash 不合适,string 也没浪费多少。拿 redis 做内存数据库的时候,hash 才有用。
|
16
ms2008 2018-04-28 13:13:30 +08:00
hash 妥妥的,怼一个 json 进去既浪费内存,又浪费 CPU
|
17
loveCoding 2018-04-28 13:30:58 +08:00
hash
|
18
ilyh 2018-04-28 14:07:08 +08:00
string, hash 没法批量操作啊
|
19
mentalidade OP @ms2008 #16 哈希的话就没法在 ngx.share.DICT 里面再缓存一层了
|
20
RorschachZZZ 2018-04-28 14:28:40 +08:00
hash 爆内存是最不能接受的。
|
21
lovedebug 2018-04-28 14:36:17 +08:00 1
尽量保持原始数据格式,不要随便为原始数据加格式。
否则后面由新需求或者修改数据会非常麻烦,migration 更痛苦 |
22
onedayonecode 2018-04-28 16:45:54 +08:00
hash 可以直接存数组,不用转
|