Class: Memcache::LocalServer

Inherits:
Object
  • Object
show all
Defined in:
lib/memcache/local_server.rb

Instance Method Summary collapse

Constructor Details

#initializeLocalServer

Returns a new instance of LocalServer.



3
4
5
6
# File 'lib/memcache/local_server.rb', line 3

def initialize
  @data = {}
  @expiry = {}
end

Instance Method Details

#add(key, value, expiry = 0) ⇒ Object



69
70
71
72
# File 'lib/memcache/local_server.rb', line 69

def add(key, value, expiry = 0)
  return nil if get(key)
  set(key, value, expiry)
end

#append(key, value) ⇒ Object



79
80
81
82
83
# File 'lib/memcache/local_server.rb', line 79

def append(key, value)
  existing = get(key)
  return nil if existing.nil?
  set(key, existing + value)
end

#decr(key, amount = 1) ⇒ Object



49
50
51
# File 'lib/memcache/local_server.rb', line 49

def decr(key, amount = 1)
  incr(key, -amount)
end

#delete(key) ⇒ Object



53
54
55
# File 'lib/memcache/local_server.rb', line 53

def delete(key)
  @data.delete(key.to_s)
end

#flush_all(delay = nil) ⇒ Object



12
13
14
15
16
# File 'lib/memcache/local_server.rb', line 12

def flush_all(delay = nil)
  raise 'flush_all not supported with delay' if delay
  @data.clear
  @expiry.clear
end

#get(keys) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/memcache/local_server.rb', line 18

def get(keys)
  if keys.kind_of?(Array)
    hash = {}
    keys.each do |key|
      key = key.to_s
      val = get(key)
      hash[key] = val if val
    end
    hash
  else
    key = keys.to_s
    if @expiry[key] and Time.now > @expiry[key]
      @data[key]   = nil
      @expiry[key] = nil
    end
    @data[key]
  end
end

#incr(key, amount = 1) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/memcache/local_server.rb', line 37

def incr(key, amount = 1)
  key = key.to_s
  value = get(key)
  return unless value
  return unless value =~ /^\d+$/

  value = value.to_i + amount
  value = 0 if value < 0
  @data[key] = value.to_s
  value
end

#nameObject



8
9
10
# File 'lib/memcache/local_server.rb', line 8

def name
  "local:#{hash}"
end

#prepend(key, value) ⇒ Object



85
86
87
88
89
# File 'lib/memcache/local_server.rb', line 85

def prepend(key, value)
  existing = get(key)
  return nil if existing.nil?
  set(key, value + existing)
end

#replace(key, value, expiry = 0) ⇒ Object



74
75
76
77
# File 'lib/memcache/local_server.rb', line 74

def replace(key, value, expiry = 0)
  return nil if get(key).nil?
  set(key, value, expiry)
end

#set(key, value, expiry = 0) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
# File 'lib/memcache/local_server.rb', line 57

def set(key, value, expiry = 0)
  key = key.to_s
  @data[key] = value
  if expiry.kind_of?(Time)
    @expiry[key] = expiry
  else  
    expiry = expiry.to_i
    @expiry[key] = expiry == 0 ? nil : Time.now + expiry
  end
  value
end