diff --git a/README.rdoc b/README.rdoc index a82ad48f9d920e55d5694cf106c66eab1d29880b..7ba6233859ab6b39562076827f9a582ca489166f 100644 --- a/README.rdoc +++ b/README.rdoc @@ -403,6 +403,39 @@ Do *not* include the prefix when passing a URL to be expired. Expiring <tt>:all< <i>Before you implement caching in your app please be sure that doing so does not violate the Terms of Service for your geocoding service.</i> +If you want to use Redis as a cache store, with values that expire automatically every 24 hours (or any other TTL), you can do this in the initialize : + + class GeocoderAutoexpireCache + def initialize(store) + @store = store + @ttl = 86400 + end + + def [](url) + @store.[](url) + end + + def []=(url, value) + @store.[]=(url, value) + @store.expire(url, @ttl) + end + + def keys + @store.keys + end + + def del(url) + @store.del(url) + end + end + + Geocoder.configure do |config| + config.cache = GeocoderAutoexpireCache.new(Redis.new) + end + +It's a simple delegation to the Redis store, but when it creates a key/value pair, it is also sending an `EXPIRE` command with a `TTL` + +It should be fairly simple to do the same thing with `Memcached`. == Forward and Reverse Geocoding in the Same Model