我试图了解如何使用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的最佳结构是什么?
答案 0 :(得分:0)
一种可能的方法是:
id
,值是包含其余属性的JSON序列化实体实例,包括或排除id
。a
开头的所有图库,则可以构建名为galleries:byname:a
的集,其中您将存储以{开头的所有图库ID' {1}}。另一方面,如果您要查找与标记或关键字匹配的所有图库,则您需要一个名为a
的集(其中关键字为 family < /强>)。galleries:bykeyword:family
执行smembers
或sscan
命令,获取所有图库标识符并获取完整对象以获取图库&#39;使用galleries:bykeyword:family
命令对完整图库对象的哈希进行元数据处理。 hmget
允许您提供一个或多个键并在单个命令/操作中获取其值。有许多方法。它可能取决于您的数据大小。您应该查看scan
-based命令。
这里的要点是,当您考虑使用Redis进行数据策略时,您需要像手动数据索引一样定制解决方案。您不能期望查询,但以某种方式存储数据按。也就是说,您需要非常了解哪些数据结构支持Redis并仔细使用它们来构建良好的数据策略并考虑性能。此外,一个很好的建议是在NoSQL世界中,如果你获得更高的性能,数据减少就可以了。
无论如何,你的问题没有明确的答案。现在你需要制作自己的R&amp; D!