Rails 求助缓存机制

jimmy0017 · 2017年05月07日 · 最后由 theblock24block 回复于 2017年05月07日 · 1403 次阅读

有一个比较 tricky 的问题。我现在用 ActiveRecord 有三个表 session, participant, result (一个 session 有 N 多 participant,一个 participant 有 N 多 result)

然后每个 session 的数据会进R跑计算 用的是 R in Ruby (会耗时比较长)

我想知道有什么办法可以比较跑了一次之后,可以存在某个地方。如果这几个表没有 update 的内容,就直接调取跑出的 result。

而且我还会根据跑出的结果生成 PDF 所以有时耗时更长。所以想看看有没有办法用 activejob 去后台有空的时候跑。然后用户需要打开的时候,如果没有变化就直接调取之前跑出的结果。

不知道 redis 是不是我想要的。但我更想要长期的储存在某个地方。

求助一下有没有知道这种奇葩情况。

redis 可以配置持久化

把你的计算设计成纯函数 (pure function),相同的参数输入总会得到相同的结果。

然后对参数进行 hash,和之前的参数 hash 对比,如果相同,就不用跑费时的计算。

对 pynix 回复

请教如何在 Ruby 中设计 pure function?

对 a0nqm 回复

这个无需什么特别技巧吧,只要满足两个条件即可:https://en.wikipedia.org/wiki/Pure_function

需要 登录 后方可回复, 如果你还没有账号请 注册新账号