class RedisRds::List

Public Instance Methods

clear() click to toggle source
# File lib/redis_rds/list.rb, line 44
def clear
  # if start > end redis clears the list
  # http://redis.io/commands/ltrim
  return connection.ltrim(@redis_key, 1, 0)
end
each(&block) click to toggle source
# File lib/redis_rds/list.rb, line 40
def each(&block)
  return get(0).each(&block)
end
empty?() click to toggle source
# File lib/redis_rds/list.rb, line 9
def empty?
  return self.size == 0 # rubocop:disable Style/ZeroLengthPredicate
end
get(start, stop = -1) click to toggle source
# File lib/redis_rds/list.rb, line 13
def get(start, stop = -1)
  return connection.lrange(@redis_key, start, stop)
end
lpop(length = 1, force = false) click to toggle source
# File lib/redis_rds/list.rb, line 25
def lpop(length = 1, force = false)
  lua_script = "
    local length = tonumber(ARGV[1]);
    if (ARGV[2] ~= 'true' or redis.call('llen', KEYS[1])>=length) then
      local result = redis.call('lrange', KEYS[1], 0, length - 1);
      redis.call('ltrim', KEYS[1], length, - 1);
      return result
    else return ''
    end"
  result = connection.eval(lua_script, [@redis_key], [length, force])
  result = [] if result.blank?

  return result
end
lpush(elems) click to toggle source
# File lib/redis_rds/list.rb, line 21
def lpush(elems)
  return connection.lpush(@redis_key, Array.wrap(elems))
end
rpush(elems) click to toggle source
# File lib/redis_rds/list.rb, line 17
def rpush(elems)
  return connection.rpush(@redis_key, Array.wrap(elems))
end
size() click to toggle source
# File lib/redis_rds/list.rb, line 5
def size
  return connection.llen(@redis_key)
end