class RubyMemcached::Memcached
Attributes
storage[R]
Public Class Methods
new()
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 8 def initialize @storage = Concurrent::Hash.new() end
Public Instance Methods
add(key, flags, exptime, bytes, data)
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 37 def add(key, flags, exptime, bytes, data) self.check_exptime(key) return Responses.not_stored if @storage.key?(key) new_item = Item.new(key, data, flags, exptime, bytes, 0) @storage.store(key, new_item) return Responses.stored end
append(key, bytes, data)
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 56 def append(key, bytes, data) self.check_exptime(key) return Responses.not_stored unless @storage.key?(key) @storage[key].data.concat(data) @storage[key].bytes += bytes @storage[key].cas_id += 1 return Responses.stored end
cas(key, flags, exptime, bytes, cas_id, data)
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 76 def cas(key, flags, exptime, bytes, cas_id, data) self.check_exptime(key) return Responses.not_found unless @storage.key?(key) old_item = @storage[key] old_item.lock.synchronize do return Responses.exists if old_item.cas_id != cas_id new_item = Item.new(key, data, flags, exptime, bytes, old_item.cas_id + 1) @storage.store(key, new_item) return Responses.stored end end
check_exptime(key)
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 97 def check_exptime(key) value = @storage[key] return true if value.nil?() || value.exptime.nil?() current_time = Time.now().getutc() if (current_time > value.exptime) @storage.delete(key) return false end return true end
check_exptimes()
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 111 def check_exptimes() deleted = 0 @storage.each_key do | key | delete += 1 unless self.check_exptime(key) end return deleted end
delete(key)
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 91 def delete(key) return Responses.not_found unless @storage.key?(key) @storage.delete(key) return Responses.deleted end
get(key)
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 12 def get(key) self.check_exptime(key) return @storage[key] end
get_multi(keys)
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 17 def get_multi(keys) result = [] for key in keys do item = self.get(key) result.append(item) unless item.nil? end return result end
prepend(key, bytes, data)
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 66 def prepend(key, bytes, data) self.check_exptime(key) return Responses.not_stored unless @storage.key?(key) @storage[key].data.prepend(data) @storage[key].bytes += bytes @storage[key].cas_id += 1 return Responses.stored end
replace(key, flags, exptime, bytes, data)
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 46 def replace(key, flags, exptime, bytes, data) self.check_exptime(key) return Responses.not_stored unless @storage.key?(key) cas_id = @storage[key].cas_id + 1 new_item = Item.new(key, data, flags, exptime, bytes, cas_id) @storage.store(key, new_item) return Responses.stored end
set(key, flags, exptime, bytes, data)
click to toggle source
# File lib/ruby-memcached/Memcached.rb, line 26 def set(key, flags, exptime, bytes, data) if(@storage.key?(key)) cas_id = @storage[key].cas_id + 1 else cas_id = 0 end new_item = Item.new(key, data, flags, exptime, bytes, cas_id) @storage.store(key, new_item) return Responses.stored end