我认为交叉反思是一种很好的学习方式。我对redis进行了一些研究,并认为作为无sc数据库的redis没有表格。它取代了表,它有键值,键列表,键集和键排序集(zset)。
这种关键数据对结构对我来说太陌生了。我更习惯于mysql,sql样式的数据库。
我得到了一个sqlFiddle here,它展示了一个简单的内连接示例。
我只是从sql中获取这些数据并将其重新建模为一个有意义的JSON对象,如下所示:
var posts = {
users: [{
userid: 1,
posts: [{
header: "header1",
content: "content of header1"
},{
header: "header2",
content: "content of header2"
},{
header: "header3",
content: "content of header3"
}]
},{
userid: 2,
posts: [{
header: "header4",
content: "content of header4"
}]
}]
}
我的问题是:
如何在redis和node.js上模仿这种表结构? 是否有用于foraign键的redis命令的内置版本? 如果我没有选择,只能使用应用程序级数据重新建模,那么如何正确地进行这种过程。
PS:交叉重新安排的例子和有用的文章将会受到影响。
修改 是否可以通过Redis的SINTER命令进行连接操作?
答案 0 :(得分:1)
Redis是一个键值存储,而不是关系数据库。因此,没有可保持实体关系的本机功能。如果你想要它,你必须将它写入你的应用程序。
我能想到的最接近的是你在Mongoose.js模块中找到的东西。 Mongoose定义了一个Schema,它定义了用于格式化和验证MongoDB获取/保存的文档的字段,还允许subdocs 可能开始模仿实体之间的关系。
...但考虑到Redis内置了记录过期/ TTL功能,这些记录存储在RAM中,它是一个键值存储......它感觉到尝试这个的错误的努力。甚至Mongoose也没有提供强制集合之间的参照完整性的功能,并且限制有助于通过其Schema提高验证/输入的记录一致性。