Rails 求助缓存机制

jimmy0017 · May 07, 2017 · Last by theblock24block replied at May 07, 2017 · 1323 hits

有一个比较 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 对比,如果相同,就不用跑费时的计算。

Reply to pynix

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

Reply to a0nqm

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

You need to Sign in before reply, if you don't have an account, please Sign up first.