如何在 ruby​​ 中缓存方法?

ama*_*air 4 ruby caching rubygems

我有一个 ruby​​ 工作流程,它很少进行昂贵的 API 调用。我知道我们有一种更简单的方法可以在 Ruby on Rails 中缓存内容,但还没有找到任何用于 ruby​​ 脚本的通用 ruby​​ gem。

为依赖于纯 ruby​​ 应用程序输入的方法缓存结果的最简单和最简单的方法是什么?

//pseudo code
def get_information (id)
  user_details = expensive_api_call(id)
  return user_details
end
Run Code Online (Sandbox Code Playgroud)

Pas*_*cal 6

最简单的方法是使用哈希:

class ApiWithCache

  def initialize
    @cache = {}
  end

  def do_thing(id)
    expensive_api_call(id)
  end

  def do_thing_with_cache(id)
    @cache[id] ||= do_thing(id)
  end
end
Run Code Online (Sandbox Code Playgroud)

现在这带来了一些您可能想要研究的问题:

  • 缓存数据到期
  • 缓存的大小(除非您还删除项目,否则会增加。这可能会导致长时间运行的进程出现问题)