Class: Redis::List
- Inherits:
-
Object
- Object
- Redis::List
- Includes:
- Enumerable, Helpers::CoreCommands, Helpers::Serialize
- Defined in:
- lib/redis/list.rb
Overview
Class representing a Redis list. Instances of Redis::List are designed to behave as much like Ruby arrays as possible.
Instance Attribute Summary collapse
-
#key ⇒ Object
readonly
Returns the value of attribute key.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#redis ⇒ Object
readonly
Returns the value of attribute redis.
Instance Method Summary collapse
-
#<<(value) ⇒ Object
Works like push.
- #==(x) ⇒ Object
-
#[](index, length = nil) ⇒ Object
Same functionality as Ruby arrays.
-
#at(index) ⇒ Object
Return the value at the given index.
-
#delete(name, count = 0) ⇒ Object
Delete the element(s) from the list that match name.
-
#each(&block) ⇒ Object
Iterate through each member of the set.
-
#empty? ⇒ Boolean
Returns true if there are no elements in the list.
-
#first ⇒ Object
Return the first element in the list.
-
#initialize(key, *args) ⇒ List
constructor
A new instance of List.
-
#last ⇒ Object
Return the last element in the list.
-
#length ⇒ Object
(also: #size)
Return the length of the list.
-
#pop ⇒ Object
Remove a member from the end of the list.
-
#push(value) ⇒ Object
Add a member to the end of the list.
-
#range(start_index, end_index) ⇒ Object
Return a range of values from
start_index
toend_index
. -
#shift ⇒ Object
Remove a member from the start of the list.
- #to_s ⇒ Object
-
#unshift(value) ⇒ Object
Add a member to the start of the list.
-
#values ⇒ Object
(also: #get)
Return all values in the list.
Methods included from Helpers::Serialize
Methods included from Helpers::CoreCommands
#exists?, #expire, #expireat, #move, #rename, #renamenx, #type
Constructor Details
#initialize(key, *args) ⇒ List
Returns a new instance of List.
15 16 17 18 19 |
# File 'lib/redis/list.rb', line 15 def initialize(key, *args) @key = key @options = args.last.is_a?(Hash) ? args.pop : {} @redis = args.first || $redis end |
Instance Attribute Details
#key ⇒ Object (readonly)
Returns the value of attribute key.
14 15 16 |
# File 'lib/redis/list.rb', line 14 def key @key end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
14 15 16 |
# File 'lib/redis/list.rb', line 14 def @options end |
#redis ⇒ Object (readonly)
Returns the value of attribute redis.
14 15 16 |
# File 'lib/redis/list.rb', line 14 def redis @redis end |
Instance Method Details
#<<(value) ⇒ Object
Works like push. Can chain together: list << ‘a’ << ‘b’
22 23 24 25 |
# File 'lib/redis/list.rb', line 22 def <<(value) push(value) self # for << 'a' << 'b' end |
#==(x) ⇒ Object
115 116 117 |
# File 'lib/redis/list.rb', line 115 def ==(x) values == x end |
#[](index, length = nil) ⇒ Object
Same functionality as Ruby arrays. If a single number is given, return just the element at that index using Redis: LINDEX. Otherwise, return a range of values using Redis: LRANGE.
58 59 60 61 62 63 64 65 66 |
# File 'lib/redis/list.rb', line 58 def [](index, length=nil) if index.is_a? Range range(index.first, index.last) elsif length range(index, length) else at(index) end end |
#at(index) ⇒ Object
Return the value at the given index. Can also use familiar list syntax. Redis: LINDEX
90 91 92 |
# File 'lib/redis/list.rb', line 90 def at(index) from_redis redis.lindex(key, index) end |
#delete(name, count = 0) ⇒ Object
Delete the element(s) from the list that match name. If count is specified, only the first-N (if positive) or last-N (if negative) will be removed. Use .del to completely delete the entire key. Redis: LREM
72 73 74 |
# File 'lib/redis/list.rb', line 72 def delete(name, count=0) redis.lrem(key, count, name) # weird api end |
#each(&block) ⇒ Object
Iterate through each member of the set. Redis::Objects mixes in Enumerable, so you can also use familiar methods like collect
, detect
, and so forth.
78 79 80 |
# File 'lib/redis/list.rb', line 78 def each(&block) values.each(&block) end |
#empty? ⇒ Boolean
Returns true if there are no elements in the list. Redis: LLEN == 0
111 112 113 |
# File 'lib/redis/list.rb', line 111 def empty? length == 0 end |
#first ⇒ Object
Return the first element in the list. Redis: LINDEX(0)
95 96 97 |
# File 'lib/redis/list.rb', line 95 def first at(0) end |
#last ⇒ Object
Return the last element in the list. Redis: LINDEX(-1)
100 101 102 |
# File 'lib/redis/list.rb', line 100 def last at(-1) end |
#length ⇒ Object Also known as: size
Return the length of the list. Aliased as size. Redis: LLEN
105 106 107 |
# File 'lib/redis/list.rb', line 105 def length redis.llen(key) end |
#pop ⇒ Object
Remove a member from the end of the list. Redis: RPOP
34 35 36 |
# File 'lib/redis/list.rb', line 34 def pop from_redis redis.rpop(key) end |
#push(value) ⇒ Object
Add a member to the end of the list. Redis: RPUSH
28 29 30 31 |
# File 'lib/redis/list.rb', line 28 def push(value) redis.rpush(key, to_redis(value)) redis.ltrim(key, -[:maxlength], -1) if [:maxlength] end |
#range(start_index, end_index) ⇒ Object
Return a range of values from start_index
to end_index
. Can also use the familiar list Ruby syntax. Redis: LRANGE
84 85 86 |
# File 'lib/redis/list.rb', line 84 def range(start_index, end_index) from_redis redis.lrange(key, start_index, end_index) end |
#shift ⇒ Object
Remove a member from the start of the list. Redis: LPOP
45 46 47 |
# File 'lib/redis/list.rb', line 45 def shift from_redis redis.lpop(key) end |
#to_s ⇒ Object
119 120 121 |
# File 'lib/redis/list.rb', line 119 def to_s values.join(', ') end |
#unshift(value) ⇒ Object
Add a member to the start of the list. Redis: LPUSH
39 40 41 42 |
# File 'lib/redis/list.rb', line 39 def unshift(value) redis.lpush(key, to_redis(value)) redis.ltrim(key, 0, [:maxlength] - 1) if [:maxlength] end |
#values ⇒ Object Also known as: get
Return all values in the list. Redis: LRANGE(0,-1)
50 51 52 |
# File 'lib/redis/list.rb', line 50 def values from_redis range(0, -1) end |