protected Method

MemCache.get_server_for_key(key)

Pick a server to handle the request based on a hash of the key.

Source Code

# File active_support/vendor/memcache-client-1.5.0/memcache.rb, line 540
def get_server_for_key(key)
  raise ArgumentError, "illegal character in key #{key.inspect}" if
    key =~ /\s/
  raise ArgumentError, "key too long #{key.inspect}" if key.length > 250
  raise MemCacheError, "No servers available" if @servers.empty?
  return @servers.first if @servers.length == 1

  hkey = hash_for key

  20.times do |try|
    server = @buckets[hkey % @buckets.nitems]
    return server if server.alive?
    hkey += hash_for "#{try}#{key}"
  end

  raise MemCacheError, "No servers available"
end
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.