如何缓存用户特定对象

时间:2014-12-31 12:17:22

标签: ruby

我想缓存" foo"特定密钥/秘密组合的对象。我应该如何在红宝石中这样做。

require 'foo/api'

foo = Foo::API::Client.new(key, secret)

1 个答案:

答案 0 :(得分:1)

这取决于您用于缓存的内容以及您想要的缓存类型。无论缓存类型如何,常见的过程都是使用密钥/密钥作为缓存密钥的一部分。

例如,使用memoization。

cache = {}
cache["foo-#{key}:{secret}"] ||= Foo::API::Client.new(key, secret)

您可以将所有内容包装在类或方法中。

def client(key, secret)
  @clients ||= {}
  @clients["client-#{key}:{secret}"] ||= Foo::API::Client.new(key, secret)
end

如果你想要一个外部缓存,比如文件缓存或memcached缓存,只需采用相同的技术,并使用密钥和密钥组成缓存密钥。

如果密钥和密钥是“秘密”字符串,则可以计算SHA或MD5哈希并将其用作密钥,而不是清除值。