使用Ohm & Redis時,集合和集合或列表之間有什麼區別?歐姆和雷迪斯:什麼時候使用設置,列表或集合?
幾個歐姆示例使用一個列表,而不是一個集合(見list doc itself):
class Post < Ohm::Model
list :comments, Comment
end
class Comment < Ohm::Model
end
,這是什麼設計選擇的理由?
使用Ohm & Redis時,集合和集合或列表之間有什麼區別?歐姆和雷迪斯:什麼時候使用設置,列表或集合?
幾個歐姆示例使用一個列表,而不是一個集合(見list doc itself):
class Post < Ohm::Model
list :comments, Comment
end
class Comment < Ohm::Model
end
,這是什麼設計選擇的理由?
列表 - 訂購列表的元素。當你要求整個清單時,你會按照你把它們放在清單中的方式得到清單。
收藏 - 無序集合的元素。當您請求收集時,商品可能會以隨機順序出現(例如無序)。**
在您的示例中,您已經訂購了評論。
**我知道隨機不是無序的,但它確實說明了這一點。
只是爲了擴大Ariejan的答案。
List - ordered。與Ruby中的數組類似。用於隊列和保存項目。
Set - 一個無序列表。它的行爲類似於Ruby中的數組,但是針對更快的查找進行了優化。
收藏 - 與一起使用參考,它提供了一種表示關聯的簡單方法。
實質上,集合和引用是處理關聯的便捷方法。所以這樣的:
class Post < Ohm::Model
attribute :title
attribute :body
collection :comments, Comment
end
class Comment < Ohm::Model
attribute :body
reference :post, Post
end
是以下快捷方式:
class Post < Ohm::Model
attribute :title
attribute :body
def comments
Comment.find(:post_id => self.id)
end
end
class Comment < Ohm::Model
attribute :body
attribute :post_id
index :post_id
def post=(post)
self.post_id = post.id
end
def post
Post[post_id]
end
end
要回答你有關的基本原理的設計選擇原來的問題 - 收集和引用引入爲代表協會提供了一個簡單的API 。
套裝呢? – 2016-02-20 18:33:54