2013-05-27 34 views
0

我認爲交叉referancing是一種很好的學習方式。我對redis進行了一些研究,並認爲作爲一個無恥的數據庫redis沒有表格。它不是表格,而是具有鍵值,鍵列表,鍵集和鍵排序集(zset)對。如何在redis中複製左連接,內連接,mysql的聯合

這種關鍵數據對結構對我來說太陌生了。我更習慣於mysql,sql風格的數據庫。

我得到了一個sqlFiddle here它demonostrates一個簡單的內部聯接的例子。

我offenly從SQL和重新模型,可以此數據取到meaningfull 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:交叉重新參考的例子和有用的藝術品將被關聯。

編輯: 聯接就像操作可以通過Redis的SINTER命令完成嗎?

回答

1

Redis是一個鍵值存儲,而不是關係數據庫。因此,不存在將維持實體關係的本地功能。如果你想要它,你必須把它寫入你的應用程序。

我能想到的最接近的東西就是您在Mongoose.js模塊中找到的內容。 Mongoose定義了一個Schema,它定義了用於格式化和驗證使用MongoDB獲取/保存的文檔的字段,並允許可以開始模擬實體之間關係的subdocs

...但考慮到Redis具有內置的記錄過期/ TTL功能,該記錄存儲在RAM中,它是一個鍵值存儲......這種嘗試是錯誤的嘗試。即使Mongoose不提供強制集合之間參照完整性的功能,也限制了通過Schema驗證/打字提高記錄一致性。