module Dalli::KeysMatch::Server

Public Instance Methods

close_telnet!() click to toggle source
# File lib/dalli/keys_match.rb, line 33
def close_telnet!
  return unless @telnet
  @telnet.close
  @telnet = nil
end
stats_cachedump(id, size, pattern = nil) click to toggle source

Memcached does not implement binary protocol for cachedump key. Using telnet as workaround github.com/memcached/memcached/wiki/BinaryProtocolRevamped#stat

# File lib/dalli/keys_match.rb, line 18
def stats_cachedump(id, size, pattern = nil)
  [].tap do |keys|
    telnet.cmd("String" => "stats cachedump #{id} #{size}").split("\n").each do |line|
      if /ITEM (.+) \[\d+ b; \d+ s\]/ =~ line
        if pattern.nil?
          keys << $1
        else
          cache_key = $1
          keys << cache_key if cache_key =~ pattern
        end
      end
    end
  end
end

Protected Instance Methods

telnet() click to toggle source
# File lib/dalli/keys_match.rb, line 41
def telnet
  @telnet ||= begin
    configs = Dalli::KeysMatch.config.telnet(
      'Host' => hostname,
      'Port' => port
    )
    Net::Telnet.new(configs)
  end
end