我正在使用node_redis,我想保存一个类似的结构:
{
users :
"alex" : { "email" : "alex@gmail.com",
"password" : "alex123"},
"sandra" : { "email" : "sandra@gmail.com",
"password" : "sandra123"},
...
}
目前,我为每个用户创建了一个JSON对象:
jsonObj = { "email" : "alex@gmail.com",
"password" : "alex123"}
并做一个
db.hmset("alex", JSON.stringify(jsonObj))
是否有可能将此结构嵌入另一个结构(用户一个?) 我怎么能用这种结构设置用户[“alex”]?
答案 0 :(得分:23)
据我所知,Redis中没有对嵌套结构的原生支持,但可以使用set + hash(类似于hierarchical trees)对它们进行建模。 Hashes可能最适合存储单个JSON对象的字段和值。我要做的是为每个用户存储一个前缀(这是一个Redis convention),例如:
db.hmset("user:alex", JSON.stringify(jsonObj));
然后使用sets将用户分组到一个名为users
的密钥集。然后,我可以通过smembers命令获取所有用户密钥,并使用hgetall分别访问每个用户密钥。
答案 1 :(得分:16)
您可以将子结构存储为对象,并将其id存储在主结构中,而非像指针一样。所以,举个例子,我会做以下的
{
users :
"alex" : { "email" : "alex@gmail.com",
"password" : "alex123"},
"sandra" : { "email" : "sandra@gmail.com",
"password" : "sandra123"},
...
}
$x = incr idx:user
hmset user:$x email alex@gmail.com password alex123
sadd list:user $x
$x = incr idx:user
hmset user:$x email sandra@gmail.com password sandra123
sadd list:user $x
希望这个可能的解决方案有帮助