Implements a Time-to-live based cache and a Least-recently-used cache.
Usage
cache = VolatileHash.new(:strategy => ‘ttl’, :ttl => 3600) # TTL-based, default TTL is 3600 seconds. The value will be cached no longer # than 3600 seconds after it is inserted into the cache.
cache = VolatileHash.new(:strategy => ‘ttl’, :ttl => 3600, :refresh => true) # TTL-based, default TTL is 3600 seconds. The value will be cached no longer # than 3600 seconds after it is inserted or accessed.
cache = VolatileHash.new(:strategy => ‘lru’, :max => 10) # LRU-based, default max is 10. That’s the maximum keys to remember.
cache = “some expensive-to-calculate value, like a database query result” cache[“any key”] = “or a remote api call”
# memo-ization: def get_value_for(key)
@cache ||= VolatileHash.new(:strategy => 'ttl', :ttl => 3600)
@cache[key] ||= get_from_api(key)
end
Test/Development
gem install bundler bundle install rake
Credits
Based on a gist by github.com user joshaven at gist.github.com/184837
Some input from github user supertaz, considerable help on the TTL-based version. Idea for the LRU cache developed at TrueCar Inc.