I am new to redis and I am trying to figure out how redis can be used. So please let me know if this is a right way to build an application.
我正在构建一个只有一个数据源的应用程序。我计划每晚运行一项作业,将数据放入文件中。
现在我有一个前端应用程序,需要以不同的格式呈现这些数据。
示例应用程序用例
每晚下载大学处理过的申请。
显示有多少申请被批准或拒绝。
按州显示申请数量。
让用户通过应用程序 ID 搜索应用程序。
我正在考虑使用redis,而不是像关系数据库那样使用postgres/mysql。我计划通过以下方式存储数据。
- 应用 ID -> 应用详细信息
- 状态 -> 应用程序 ID 列表
- 已批准 -> 申请 ID 列表(按日期?)
- 已拒绝 -> 申请 ID 列表(按日期?)
这是将数据存储到 Redis 的正确方法吗?
此外,如果有人查询特定日期加利福尼亚州的所有申请, 我将能够在一次调用中提取应用程序 ID,但要获取每个应用程序的详细信息,我是否需要发出另一个请求?
最佳答案
警告:
为什么? Redis 是一个令人惊叹的数据库,但不要用正确的锤子钉错误的钉子。如果您需要大规模的实时性能,请使用 Redis,但如果您需要的话,请不要尝试让它取代 RDBMS。Instead of using postgres/mysql like relational database, I am thinking about using redis.
答案:
从 Redis 高效获取数据来回答您的查询取决于您将如何存储数据。因此,要确定“正确”的数据模型,您首先需要定义查询。您提出的数据模型只是数据的描述 - 它并没有真正说明您计划如何将其存储在 Redis 中。如果没有有关查询的更多详细信息,我将按如下方式存储数据:
- 将应用详细信息存储在哈希中(例如
app:<id>
) - 将应用程序 ID 存储在 Set 中的每个状态中(例如
apps:<state>
) - 将批准/拒绝的申请存储在两个排序集中,id 为成员,日期为分数
Also if someone queries for all applications in california for a certain date, I will be able to pull application ids in one call but to get details for each application, do I need to make another request?
同样,这取决于数据模型,但您可以使用 Lua 脚本嵌入此逻辑并在对数据库的一次调用中执行它。
关于redis - 使用 Redis 的应用程序的数据模型设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29620042/