# File lib/mcollective/cache.rb, line 97
    def self.read(cache_name, key)
      raise("No cache called '%s'" % cache_name) unless @cache.include?(cache_name)

      unless ttl(cache_name, key) > 0
        Log.debug("Cache expired on '%s' key '%s'" % [cache_name, key])
        raise("Cache for item '%s' on cache '%s' has expired" % [key, cache_name])
      end

      Log.debug("Cache hit on '%s' key '%s'" % [cache_name, key])

      @cache_locks[cache_name].synchronize do
        @cache[cache_name][key][:value]
      end
    end