mysql的左连接,内连接,联合如何在redis中复制?



我认为交叉参考是一种很好的学习方式。我对redis做了一些研究,它似乎是一个无格式的数据库redis没有表。除了表,它还有key-value, key-list, key-set和key-sortedset(zset)对。

这种键-数据对结构对我来说太陌生了。我更习惯mysql, sql风格的数据库。

我得到了一个sqlFiddle,这里它演示了一个简单的内部连接示例。

我经常从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上模拟这种表结构?是否有一个构建在redis命令的外键?如果我别无选择,只能使用应用程序级别的数据重新建模,如何才能正确地完成这种过程。

PS:交叉引用的例子和有用的文章将不胜感激。

编辑:

像join这样的操作可以通过Redis的SINTER命令完成吗?

Redis是键值存储,而不是关系数据库。因此,不存在维护实体关系的本机函数。如果你想要它,你必须把它写进你的应用程序。

我能想到的最接近的东西是你在Mongoose.js模块中找到的东西。Mongoose定义了一个Schema,该Schema定义了用于格式化和验证MongoDB获取/保存的文档的字段,并且还允许子文档可能开始模拟实体之间的关系。

…但是考虑到Redis有一个内置的记录过期/TTL功能,记录存储在RAM中,这是一个键值存储....这种尝试感觉是一种错位的努力。即使是Mongoose也没有提供在集合和限制之间强制引用完整性的功能,这有助于通过它的Schema通过验证/类型来提高记录的一致性。

最新更新