Class: RedisRds::List

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/redis_rds/list.rb

Instance Attribute Summary

Attributes inherited from Object

#redis_key

Instance Method Summary collapse

Methods inherited from Object

configure, #connection, connection, #delete, #dump, #exists?, #expire, #expireat, flushdb, #initialize, #namespace, #persist, #pttl, #ttl, #type

Constructor Details

This class inherits a constructor from RedisRds::Object

Instance Method Details

#clearObject



44
45
46
47
48
# 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) ⇒ Object



40
41
42
# File 'lib/redis_rds/list.rb', line 40

def each(&block)
  return get(0).each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/redis_rds/list.rb', line 9

def empty?
  return self.size == 0 # rubocop:disable Style/ZeroLengthPredicate
end

#get(start, stop = -1)) ⇒ Object



13
14
15
# 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) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 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) ⇒ Object



21
22
23
# File 'lib/redis_rds/list.rb', line 21

def lpush(elems)
  return connection.lpush(@redis_key, Array.wrap(elems))
end

#rpush(elems) ⇒ Object



17
18
19
# File 'lib/redis_rds/list.rb', line 17

def rpush(elems)
  return connection.rpush(@redis_key, Array.wrap(elems))
end

#sizeObject



5
6
7
# File 'lib/redis_rds/list.rb', line 5

def size
  return connection.llen(@redis_key)
end