Class: Opod::MemCached

Inherits:
Object
  • Object
show all
Defined in:
lib/opod/memcached.rb

Instance Method Summary collapse

Constructor Details

#initialize(name = "cache", keepalive = nil) ⇒ MemCached

Returns a new instance of MemCached.



22
23
24
25
26
# File 'lib/opod/memcached.rb', line 22

def initialize(name = "cache", keepalive = nil)
  @sock = TCPSocket.new(MemCached.address, MemCached.port)
  @name = name
  @keepalive = keepalive
end

Instance Method Details

#[](k) ⇒ Object Also known as: get



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/opod/memcached.rb', line 42

def [](k)
  @sock.print("get #{@name}:#{k}\r\n")
  resp = @sock.gets
  if resp == "END\r\n"
    return nil
  end

  #dummy, key, flags, size
  size = resp.split(/ /).last.to_i
  raw_data = @sock.read(size)
  @sock.gets # \r\n
  @sock.gets # END\r\n
  Marshal.load( raw_data )
end

#[]=(k, v) ⇒ Object Also known as: set



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/opod/memcached.rb', line 28

def []=(k,v)
  if @keepalive
    exptime = (Time.now + @keepalive).to_i
  else
    exptime = 0
  end

  data = Marshal.dump(v)
  @sock.print("set #{@name}:#{k} 0 #{exptime} #{data.size}\r\n#{data}\r\n")
  response = @sock.gets # "STORED\r\n"
  v
end

#delete(k) ⇒ Object



58
59
60
61
# File 'lib/opod/memcached.rb', line 58

def delete(k)
  @sock.print("delete #{@name}:#{k}\r\n")
  @sock.gets # "DELETED\r\n"
end

#gc!Object



63
64
65
# File 'lib/opod/memcached.rb', line 63

def gc!
  # garbage collection is handled by the memcache server
end