Ohm&Redis:セット、リスト、またはコレクションを使用するのはいつですか?

StackOverflow https://stackoverflow.com/questions/4781605

  •  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を提供するためにコレクションと参照が導入されました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top