module Memcached

Public Class Methods

items(*_servers) click to toggle source
# File lib/memcached.rb, line 4
def self.items(*_servers)
  servers = _servers.collect {|s| s.split(':')}
  all_rows = servers.collect do |server|
    server_rows = server_items(*server) do |slab_id, expires_time, bytes, cache_key, cache_key_length, host, port|
      {:id=>slab_id, :expires=>expires_time, :bytes=>bytes, :name=>cache_key, :server=>[host,port].join(':')}
    end
    server_rows
  end.flatten(1)

  return all_rows
end
keys(*_servers) click to toggle source
# File lib/memcached.rb, line 32
def self.keys(*_servers)
  items = self.items(*_servers)
  items.collect { |i| CGI.unescape(i[0]) }.sort
end
server_items(_host='host', _port=11211) click to toggle source
# File lib/memcached.rb, line 16
def self.server_items(_host='host', _port=11211)
  keys = []
  host = Net::Telnet::new("Host" => _host, "Port" => _port, "Timeout" => 1)

  host.cmd("String" => "lru_crawler metadump all", "Match" => /^END/) do |row|
    row.scan(/key=(\S*)/) do |key|
      keys << key
    end
  end
  host.close
rescue Exception
  puts "Could not get memcache items from #{_host}:#{_port}"
ensure
  return keys
end