我想缓存" foo"特定密钥/秘密组合的对象。我应该如何在红宝石中这样做。
require 'foo/api'
foo = Foo::API::Client.new(key, secret)
答案 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哈希并将其用作密钥,而不是清除值。