我正在开发一个 Ruby on Rails 网站。
为了提高性能,我想建立一些各种统计数据的缓存,以便将来显示它们时,我只需要显示缓存而不是拉所有数据库记录来计算这些统计数据。
例子:
一个模型用户有_很多评论。我想将他们有多少评论存储到用户缓存模型中。这样,当我需要显示用户发表的评论数量时,它只是对统计模型的简单查询。每次创建或销毁新评论时,它只会增加或减少计数器。
我如何在网站上线时构建这些统计信息?我担心的是,在我请求数据库计算用户拥有的评论数量之后,但在它能够执行命令将其保存到统计信息之前,该用户可能会潜入并在某处添加另一条评论。这将增加计数器,但随后立即被另一个线程覆盖,导致保存不正确的统计信息。
我熟悉 ActiveRecord 事务块,但据我了解,这些是为了保证所有或没有一个整体成功,而不是充当数据库上数据的互斥保护。
基本上有必要关闭网站以进行此类更改吗?