首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ohm & Redis:何时使用集合、列表或集合?

Ohm & Redis:何时使用集合、列表或集合?
EN

Stack Overflow用户
提问于 2011-01-24 19:48:27
回答 2查看 2.6K关注 0票数 5

使用Ohm & Redis时,集合和集合或列表有什么不同?

有几个欧姆示例使用列表而不是集合(参见list doc itself):

代码语言:javascript
复制
class Post < Ohm::Model
  list :comments, Comment
end

class Comment < Ohm::Model
end

这种设计选择的理由是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-24 23:27:56

元素的列表排序列表。当您请求整个列表时,您将按照将项目放入列表的方式对其进行排序。

集合-元素的无序集合。当您请求集合时,项目可能会以随机顺序(例如无序).**出现

在您的示例中,注释是排序的。

**我知道随机与无序不同,但它确实说明了这一点。

票数 5
EN

Stack Overflow用户

发布于 2011-06-09 00:08:04

只是在Ariejan的答案上进行扩展。

  • 列表-已订购。类似于Ruby中的数组。用于队列和保持项的有序。
  • Set-无序列表。它的行为类似于Ruby中的数组,但针对更快的lookups.
  • Collection进行了优化-与引用一起使用时,它提供了一种表示关联的简单方法。

本质上,集合和引用是处理关联的方便方法。所以这就是:

代码语言:javascript
复制
class Post < Ohm::Model
  attribute :title
  attribute :body
  collection :comments, Comment
end

class Comment < Ohm::Model
  attribute :body
  reference :post, Post
end

是以下各项的快捷方式:

代码语言:javascript
复制
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。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4781605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档