Rails 求助缓存机制

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

有一个比较 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

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