redis 的 hash 中可以存储 hash 吗
来源:3-1 Redis基本数据类型
abulaka
2020-11-26
- 第一个问题
比如有如下数据
{
user1: {
name: zhangsan,
age: 18
},
user2: {
name: lisi,
age: 20
}
}
如果我通过以下方式存储的话,实际上是存储了 user:1 和 user:2 两个 key
hset user:1 name zhangsan age 18
hset user:2 name lisi age 20
能不能只把 user 作为 key 存储,user:1 和 user:2 作为内部的 key,这样,看上去数据库中的 key 就不是那么多了。
- 如果有下面这样的数据,redis 一般怎么存储
{
"id": "0001",
"name":"widget ABC",
"model": "model123",
"service":"standard",
"admin_password": 82616416,
"r1":
{
"extid":"50000",
"password":"test123",
},
"r2":
{
"ext":"30000",
"password":"test123",
},
}
写回答
1回答
-
第一个问题, 如果单独只把user作为key的话这样是不行的,如果这样保存你可以去试试,最终只有一条数据,因为value的hash结构会被后面的内容覆盖(你先写入一条:hset user userId 1,你如果在写入一条hset user userId 2那么userId2就会覆盖userId1的值),这个缓存你用考虑key有多少,数据量如果实在很大,我们后期可以采用分片进行存储的。
第二个问题:这样的JSON格式有两种存储方式,具体的使用要分场景,需要自己衡量一下,第一种就是string类型存储,这种就是序列化成json保存进去,另一种就是hash保存(里面r1和r2的值会以json字符串保存进去),如果只是一些不变的数据,而且字段就这些,保存到string也行,序列化和反序列化速度也能接受
20
相似问题