2012-07-25 49 views
0

我有一个下面的模型是正确的选择:Redis的是这个模型

| string (unique key) | about 10 other strings, that have all a fixed length and may be empty | 

在常用查询使用独特的键,看到其他琴弦“。使用Redis应该没问题。

但另一个查询是'显示列n为空的键'。我不确定Redis是否可以处理这种性能!

回答

1

要在redis中解决这个问题,您需要维护一些元数据。一种解决方案是为每个“列”添加一个设置类型键,该列将保存“列”为空的所有元素的唯一键。显然,在您的应用程序逻辑中,当您在主散列中添加和删除值时,您需要添加和删除这些集合中的唯一键。这将是非常快的,因为设置操作sadd,sremsismember对于单个项目(即,不与组的大小成比例)全部是O(1)。要获得“列”为空的所有键,可以使用smembers。至少,这就是我解决类似问题的方法。

(我把周围的列引号,因为在Redis的模型,他们将哈希领域,不列作为您在RDBMS认为他们)

+0

感谢。 O(1)听起来很完美!你认为Redis是这个问题的不错选择吗? – Mark 2012-07-26 18:20:28

+1

真的取决于你的问题。 redis和RDBMS之间的折衷是灵活的存储与灵活的查询。在redis中,很难在任意字段上查询 - 您可能需要获取所有内容并在应用中进行筛选,或者像我在答案中描述的那样构建索引。另一方面,添加字段非常容易,甚至只在某些项目上存在的字段。真的取决于你需要灵活性的地方。我喜欢使用它,但是我确实有大量的代码来维护各种过滤和排序的索引。 – 2012-07-26 18:49:32

相关问题