如何在Redis上构建Gallery应用程序?

时间:2016-01-10 08:50:32

标签: redis

我试图了解如何使用Redis构建应用程序。 如何使用redis处理以下用例? (带文件夹的图库):

用户收藏

id:数字,
userName:String

图库文件夹集

id:数字
userId:数字
folderName:String

图库

id:数字
userId:数字
folderId:数字
galleryName:String
pageViews:Number

图片

id:数字
galleryId:数字
imageUrl:String

如何使用redis查询图库?

    1.有时我想通过galleryName(搜索)来过滤结果     2.有时我想按galleryName过滤结果(对于搜索)+仅来自userId的画廊     3.有时我想通过galleryName过滤结果(对于搜索)+仅来自userId的画廊+按页面视图Descending排序     4.有时候我想通过id或id

获取图库

Redis的最佳结构是什么?

1 个答案:

答案 0 :(得分:0)

一种可能的方法是:

  • 每个实体应由 hash 数据结构表示,其中键是实体id,值是包含其余属性的JSON序列化实体实例,包括或排除id
  • 要实施过滤器,您需要在排序集中对数据建立索引,有时在列表中建立索引。例如,如果您希望获得以a开头的所有图库,则可以构建名为galleries:byname:a,其中您将存储以{开头的所有图库ID' {1}}。另一方面,如果您要查找与标记或关键字匹配的所有图库,则您需要一个名为a(其中关键字为 family < /强>)。
  • 要获得与关键字匹配的所有图库,您需要对galleries:bykeyword:family执行smemberssscan命令,获取所有图库标识符并获取完整对象以获取图库&#39;使用galleries:bykeyword:family命令对完整图库对象的哈希进行元数据处理。 hmget允许您提供一个或多个并在单个命令/操作中获取其值。

有许多方法。它可能取决于您的数据大小。您应该查看scan-based命令。

这里的要点是,当您考虑使用Redis进行数据策略时,您需要像手动数据索引一样定制解决方案。您不能期望查询,但以某种方式存储数据。也就是说,您需要非常了解哪些数据结构支持Redis并仔细使用它们来构建良好的数据策略并考虑性能。此外,一个很好的建议是在NoSQL世界中,如果你获得更高的性能,数据减少就可以了。

无论如何,你的问题没有明确的答案。现在你需要制作自己的R&amp; D!