gpt4 book ai didi

django - 使用 Redis 作为 REST API 的中间缓存

转载 作者:IT王子 更新时间:2023-10-29 05:55:20 24 4
gpt4 key购买 nike

我们有一个 iOS 应用程序,它通过 REST API 与 django 服务器通信。大多数数据由相当大的 Item 对象组成,这些对象涉及一些渲染到单个平面字典中的相关模型,并且这些数据很少更改。

我们发现,查询这对 Postgres 来说不是问题,但生成 JSON 响应需要花费大量时间。另一方面,项目集合因用户而异。

我想到了一个渲染系统,我们只需为 Item 对象构建一个字典并将其作为 JSON 字符串保存到 redis 中,这样我们就可以直接从 redis 提供 API(例如 HMGET(用户库中的项目的 id),它速度很快,并且使重新生成“渲染实例”变得相对容易,基本上只需几个 post_save 信号。

我想知道这个设计有多好,它有什么重大缺陷吗?也许有更好的方法来完成这项任务?

最佳答案

当然,我们公司也这样做,使用 Redis 存储的不是 JSON,而是大型 XML 字符串,这些字符串是从后端数据库为 RESTful 请求生成的,它节省了大量的网络跃点和开销。

如果这是您第一次使用 Redis,请牢记一些注意事项...

专用 Redis 服务器
Redis是单线程的,应该部署在有足够CPU算力的专用服务器上。不要错误地将其部署在您的应用程序或数据库服务器上。

高可用性
使用主/从复制设置 Redis 以实现高可用性。我知道 Redis 取得了很多进展 cluster ,因此您可能也想检查一下是否有 HA。

缓存命中/未命中
在检查 Redis 是否有缓存“命中”时,如果连接已死或发生任何异常,请不要使请求失败,只是默认到数据库;缓存应该总是“尽力而为”,因为数据库总是可以作为最后的手段使用。

关于django - 使用 Redis 作为 REST API 的中间缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16199630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com