class MemcachePod::Memory
Public Class Methods
new(max_memory)
click to toggle source
# File lib/memcachepod/memory.rb, line 7 def initialize(max_memory) @max_memory = max_memory.to_i @memory_pool = Hash.new end
Public Instance Methods
delete(key)
click to toggle source
# File lib/memcachepod/memory.rb, line 30 def delete(key) if(@memory_pool.has_key?(key)) @memory_pool.delete(key) end end
flush()
click to toggle source
# File lib/memcachepod/memory.rb, line 36 def flush() @memory_pool = Hash.new end
get(key, options=nil)
click to toggle source
# File lib/memcachepod/memory.rb, line 12 def get(key, options=nil) remove_expires() if @memory_pool.has_key?(key) return @memory_pool[key].body else return nil end end
get_memory_usage()
click to toggle source
# File lib/memcachepod/memory.rb, line 46 def get_memory_usage total = 0 @memory_pool.map {|k,v| total += v.body.size } return total end
get_status()
click to toggle source
# File lib/memcachepod/memory.rb, line 40 def get_status return @memory_pool.map {|k,v| v.get_status } end
set(key, value, ttl=0, options=nil)
click to toggle source
# File lib/memcachepod/memory.rb, line 21 def set(key, value, ttl=0, options=nil) remove_expires() if(@memory_pool.has_key?(key)) @memory_pool[key].update(value,ttl) else @memory_pool[key] = MemoryEntry.new(value,ttl) end end
Private Instance Methods
remove_expires()
click to toggle source
# File lib/memcachepod/memory.rb, line 56 def remove_expires() @memory_pool.each_key{ |key| entry = @memory_pool[key] if entry.expired? @memory_pool.delete(key) #printf( "remove 1, key : %s \n", key ) end } total = get_memory_usage @memory_pool.each_key{ |key| if @max_memory <= total entry = @memory_pool[key] total -= entry.body.size @memory_pool.delete(key) #printf( "remove 2, key : %s \n", key ) else break end } end