【发布时间】:2014-02-28 16:23:08
【问题描述】:
我正在开发一个相册系统,并决定使用 Redis。我将用户的照片数据(谁拥有哪些照片)保存在 Redis 中。例如:photos:1000:pid [1,24,525,12,42,62,56] 表示 id 为 1000 的用户拥有列表中的照片(id)。我困惑的一点是当我得到 [1,24,525,12,42,62,56] 时,我怎样才能得到照片细节?我想再次使用 Redis 获取照片详细信息。但是,当用户有 150 张照片时,一张一张地获取它们(从 java 中使用 jedis 在循环中)花费 100 - 150 毫秒,这不适合我的情况。我必须管理高流量。响应不应超过 100 毫秒。
我决定通过使用存储过程来使用 DB,“一次拍摄,获取所有内容”知道照片 ID(它们已编入索引)。 “从 Redis 获取 id,从 DB 获取详细信息”是正确的方法吗?遇到这种情况你会怎么做?
【问题讨论】:
-
把所有细节放在redis中,在hash类型的键中有什么问题?
-
Redis 没有搜索功能。我可以说“从 ownerid=1000 的照片中选择 *”来获取包含所有必需字段的特定照片集吗?
-
这不是你的做法。您创建具有多种用途的多个密钥。例如,一个键保存给定所有者的所有照片。然后另一个键保存每张特定照片的详细信息。
-
所以我从 user:1000:photos 密钥中获得了 100 个照片 ID,该密钥保留了用户的所有照片 ID。我如何从照片:
:dtls hash 中获取这 100 张照片详细信息?我必须为每个照片 ID 运行 100 次,对吗?这是我在问题中提到的主要问题。
标签: java sql database architecture redis