Ohm&Redis:セット、リスト、またはコレクションを使用するのはいつですか?
-
23-10-2019 - |
質問
オーム&redisを使用する場合のコレクションとセットまたはリストの違いは何ですか?
オームの例のいくつかは、コレクションではなくリストを使用しています( ドキュメント自体をリストします):
class Post < Ohm::Model
list :comments, Comment
end
class Comment < Ohm::Model
end
この設計の選択の理論的根拠は何ですか?
解決
リスト - 注文 リスト 要素の。リスト全体をリクエストすると、アイテムがリストに入れられる方法を注文します。
コレクション - 順序付けられていません コレクション 要素の。コレクションをリクエストすると、アイテムはランダムな順序で表示される場合があります(例:Un -Ordered)。**
あなたの例では、コメントが注文されます。
**ランダムは順序と同じではないことを知っていますが、ポイントを示しています。
他のヒント
Ariejanの答えを拡大するためだけに。
リスト - 注文。 Rubyの配列に似ています。キューとアイテムの注文の保持に使用されます。
セット - 順序付けられていないリスト。これ 振る舞います 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を提供するためにコレクションと参照が導入されました。
所属していません StackOverflow