2012-06-08 67 views
2

我设计了我的第一个Redis数据库,并希望得到一些反馈,建议或提示。Redis数据库设计基础

概述:

可以通过喜欢在稍后进行排序,创建日期,更新我的Redis数据库存储的文章,作者等...

文章还含有“项目”我还需要以确定哪些物品在其中包含1个物品。

创作

当创建一个新的文章我写它的ID各种按键

ZADD '的文章:创建' 时间戳条款ArticleID

ZADD '的文章:更新' 时间戳条款ArticleID

ZADD'articles:likes'0 ArticleID

SADD'user:USERI d:文章条款ArticleID

每当文章更新

ZADD '的文章:更新' 时间戳条款ArticleID

每当一个项目添加到文章

ZADD '的文章:ITEMCOUNT' ItemCount中条款ArticleID

如果一个项目被删除,并且没有项目依然存在,我只是删除其成员

ZREM“阿尔季克莱斯:ITEMCOUNT”条款ArticleID

所以,当谈到排序我做到以下几点:

  1. 我进行ZUNIONSTORE与‘文章:喜欢’和‘文章:更新’
  2. 随着我对结果对结果的ZINTERSTORE和“文章:ITEMCOUNT”
  3. 有了结果,我只是执行ZREVRANGEBYSCORE

这一切工作查找和做什么,我想要它做的,但是我是新来的雷迪斯并接受建议和改进。

真诚,

- 詹姆斯

回答

0

我同意你的解决方案。

改进的地方,想想Transaction

创作

ZADD '的文章:创建' 时间戳条款ArticleID

ZADD '的文章:更新' 时间戳条款ArticleID

ZADD '的文章:喜欢' 0条款ArticleID

SADD '用户:用户名:文章' 条款ArticleID

EXEC

+0

感谢您的答复,谢谢你提出了这个MULTI命令,我再有1后续问题。 我想要筛选结果的方法越多,为了特定目的需要创建的键越多,显然每个键都只包含文章ID和分数,目前我们有大约30种不同的筛选方式,来自SQL似乎很奇怪,因为每个ID都在30个不同的键上重复。 因此,简而言之,它是如何完成的,如果是这样,这是否使得redis成为我的要求的不好选择。 此致 - - James –