class MemcachedTest::Memcached

Public Class Methods

new() click to toggle source
# File lib/memcached_test/memcached.rb, line 7
def initialize
    @cache = Concurrent::Hash.new
end

Public Instance Methods

add(key, flags, exptime, bytes, data) click to toggle source
# File lib/memcached_test/memcached.rb, line 49
def add(key, flags, exptime, bytes, data)
    if @cache.key?(key)
        return "NOT_STORED\r\n"
    else
        item = Memcached_item.new(flags, exptime, bytes, 1, data[0, bytes.to_i])
        @cache[key] = item
        return "STORED\r\n" 
    end
end
append(key, bytes, data) click to toggle source
# File lib/memcached_test/memcached.rb, line 69
def append(key, bytes, data)
    if @cache.key?(key)        
        item_old = @cache[key]
        item_new = Memcached_item.new(item_old.flags, item_old.exptime, item_old.bytes.to_i + bytes.to_i, @cache[key].cas + 1, item_old.data + data[0, bytes.to_i])
        @cache[key] = item_new
        return "STORED\r\n"
    else
        return "NOT_STORED\r\n"
    end
end
cas(key, flags, exptime, bytes, cas, data) click to toggle source
# File lib/memcached_test/memcached.rb, line 91
def cas(key, flags, exptime, bytes, cas, data)
    if @cache.key?(key) 
        if @cache[key].cas == cas.to_i
            item = Memcached_item.new(flags, exptime, bytes, cas.to_i + 1, data[0, bytes.to_i])
            @cache[key] = item
            return "STORED\r\n"
        else
            return "EXISTS\r\n"
        end
    else
        return "NOT_FOUND\r\n"
    end
end
delete(key) click to toggle source
# File lib/memcached_test/memcached.rb, line 105
def delete(key)
    if @cache.key?(key)
        @cache.delete(key)
        return true
    else
        return nil
    end        
end
flush_all() click to toggle source
# File lib/memcached_test/memcached.rb, line 114
def flush_all()
    @cache.each_key do |key|
        if Time.now() > @cache[key].exptime
            self.delete(key)
        end
    end
    return "OK\r\n"
end
get(keys) click to toggle source
# File lib/memcached_test/memcached.rb, line 11
def get(keys)
    result = []
    
    for key in keys do
        item = @cache[key]
        unless item.nil?
            item_array = [key, item.flags, item.exptime, item.bytes, item.data]
            result.append(item_array)
        end
    end
    return result
end
gets(keys) click to toggle source
# File lib/memcached_test/memcached.rb, line 24
def gets(keys)
    result = []
    
    for key in keys do
        item = @cache[key]
        unless item.nil?
            item_array = [key, item.flags, item.exptime, item.bytes, item.cas, item.data]
            result.append(item_array)
        end
    end
    return result
end
prepend(key, bytes, data) click to toggle source
# File lib/memcached_test/memcached.rb, line 80
def prepend(key, bytes, data)
    if @cache.key?(key)
        item_old = @cache[key]
        item_new = Memcached_item.new(item_old.flags, item_old.exptime, item_old.bytes.to_i + bytes.to_i, @cache[key].cas + 1, data[0, bytes.to_i] + item_old.data)
        @cache[key] = item_new
        return "STORED\r\n"
    else
        return "NOT_STORED\r\n"
    end
end
replace(key, flags, exptime, bytes, data) click to toggle source
# File lib/memcached_test/memcached.rb, line 59
def replace(key, flags, exptime, bytes, data)
    if @cache.key?(key)
        item = Memcached_item.new(flags, exptime, bytes, @cache[key].cas + 1, data[0, bytes.to_i])
        @cache[key] = item
        return "STORED\r\n"
    else
        return "NOT_STORED\r\n"
    end
end
set(key, flags, exptime, bytes, data) click to toggle source
# File lib/memcached_test/memcached.rb, line 37
def set(key, flags, exptime, bytes, data)
    if @cache.key?(key)
        item = Memcached_item.new(flags, exptime, bytes, @cache[key].cas.to_i + 1, data[0, bytes.to_i])
        @cache[key] = item
        return "STORED\r\n" 
    else
        item = Memcached_item.new(flags, exptime, bytes, 1, data[0, bytes.to_i])
        @cache[key] = item
        return "STORED\r\n"  
    end
end