我们正在尝试为我们的 Rails 应用程序实现一个高效的 SystemSettings 模块,该模块将基于 Redis。
这应该尽可能快,因为我们几乎在每个请求中都使用 SystemSettings 模块。因此,我们试图将调用此模块产生的开销降至最低。
该模块还将包含一个匹配的 Web UI,用于添加/删除/更新值。
最简单的实现显然是在每个操作上调用 Redis 服务器,但是由于我们的 Redis 服务位于与我们的 Web 服务器不同的服务器中,这显然会为每个操作产生网络开销,这是我们试图避免的事情.
我们正在寻找一种将值缓存一段时间的方法,在此期间,只需返回缓存的结果,而不是调用我们的 Redis 服务。
我们想出的唯一好的解决方案是使用ActionDispatch::Callbacks
以确定是否到了更新设置缓存的时间。问题是,对我来说,基于一些随机用户请求来刷新缓存似乎是错误的。
我们还在考虑创建一个每 5 分钟左右运行一次的小脚本,该脚本将调用一个特定的 URL,该 URL 将“触发”一个将启动缓存刷新的操作。这个解决方案的问题在于,这只会导致我们的一个乘客进程(处理请求的进程)的缓存刷新,而不是所有的。
有任何想法吗?