使用Redis的作为REST API中介缓存(Using Redis as intermediary

2019-09-01 02:12发布

我们有一个iOS应用程序是通过REST API会谈到一个Django服务器。 大部分数据包括在涉及到要呈现的单一的扁平字典一些相关的模型,而大项目的对象,而这一数据很少改变。

我们已经发现,查询这不是Postgres的一个问题,但产生JSON响应所花的时间明显金额。 在另一方面,项集合每个用户的不同而不同。

我想到了一个渲染系统,在这里我们只建立一个字典项对象,并将其保存到Redis的作为JSON字符串,这样我们就可以直接从Redis的服务API(如HMGET(用户库),这是快速项的ID,并使其相对容易再生“渲染实例”,基本上只是一对夫妇的post_save信号。

我不知道这个设计有多好,有没有在任何重大缺陷? 也许有该任务的更好的办法?

Answer 1:

当然,我们做同样的在我们公司,使用Redis的存储不是JSON但是从后端数据库生成RESTful请求大的XML字符串,并将其保存大量的网络啤酒花和开销。

有几件事情要记住,如果这是你使用Redis的第一次...

Redis的专用服务器
Redis的是单线程,并应具有足够的CPU能力的专用服务器上部署。 不要让你的应用程序或数据库服务器中部署它的错误。

高可用性
设置的Redis与高可用性主/从复制。 我知道有很多已经与Redis的进步集群 ,所以你可能要检查的,太多的HA。

缓存命中/缺失
当检查Redis的一个高速缓存“命中”,如果连接是死亡或出现任何异常,不失败的请求,只是默认的数据库; 缓存应该永远是“尽力而为”,因为数据库总是可以被用来作为最后的手段。



文章来源: Using Redis as intermediary cache for REST API