Module: Valkey::Commands::ListCommands
- Included in:
- Valkey::Commands
- Defined in:
- lib/valkey/commands/list_commands.rb
Overview
this module contains commands related to list data type.
Instance Method Summary collapse
-
#blmove(source, destination, where_source, where_destination, timeout: 0) ⇒ nil, String
Remove the first/last element in a list and append/prepend it to another list and return it, or block until one is available.
-
#blmpop(timeout, *keys, modifier: "LEFT", count: nil) ⇒ Hash?
Pops one or more elements from the first non-empty list key from the list of provided key names.
-
#blpop(*keys, timeout: 0) ⇒ nil, [String, String]
Remove and get the first element in a list, or block until one is available.
-
#brpop(*keys, timeout: 0) ⇒ nil, [String, String]
Remove and get the last element in a list, or block until one is available.
-
#brpoplpush(source, destination, timeout: 0) ⇒ nil, String
Remove the last element in a list, prepend it to another list and return it, or block until one is available.
-
#lindex(key, index) ⇒ String
Get an element from a list by its index.
-
#linsert(key, where, pivot, value) ⇒ Integer
Insert an element before or after another element in a list.
-
#llen(key) ⇒ Integer
Get the length of a list.
-
#lmove(source, destination, where_source, where_destination) ⇒ nil, String
Remove the first/last element in a list, append/prepend it to another list and return it.
-
#lmpop(*keys, modifier: "LEFT", count: nil) ⇒ Hash?
Pops one or more elements from the first non-empty list key from the list of provided key names.
-
#lpop(key, count = nil) ⇒ nil, ...
Remove and get the first elements in a list.
-
#lpush(key, *value) ⇒ Integer
Prepend one or more values to a list, creating the list if it doesn't exist.
-
#lpushx(key, *value) ⇒ Integer
Prepend one or more values to a list, only if the list exists.
-
#lrange(key, start, stop) ⇒ Array<String>
Get a range of elements from a list.
-
#lrem(key, count, value) ⇒ Integer
Remove elements from a list.
-
#lset(key, index, value) ⇒ String
Set the value of an element in a list by its index.
-
#ltrim(key, start, stop) ⇒ String
Trim a list to the specified range.
-
#rpop(key, count = nil) ⇒ nil, ...
Remove and get the last elements in a list.
-
#rpoplpush(source, destination) ⇒ nil, String
Remove the last element in a list, prepend it to another list and return it.
-
#rpush(key, *value) ⇒ Integer
Append one or more values to a list, creating the list if it doesn't exist.
-
#rpushx(key, *value) ⇒ Integer
Append one or more values to a list, only if the list exists.
Instance Method Details
#blmove(source, destination, where_source, where_destination, timeout: 0) ⇒ nil, String
This command comes in place of the now deprecated BRPOPLPUSH. Doing BLMOVE RIGHT LEFT is equivalent.
Remove the first/last element in a list and append/prepend it to another list and return it, or block until one is available.
60 61 62 63 64 65 66 |
# File 'lib/valkey/commands/list_commands.rb', line 60 def blmove(source, destination, where_source, where_destination, timeout: 0) where_source, where_destination = _normalize_move_wheres(where_source, where_destination) timeout = _validate_blocking_timeout(timeout) args = [source, destination, where_source, where_destination, timeout] send_command(RequestType::BLMOVE, args) end |
#blmpop(timeout, *keys, modifier: "LEFT", count: nil) ⇒ Hash?
Pops one or more elements from the first non-empty list key from the list of provided key names. If lists are empty, blocks until timeout has passed.
242 243 244 245 246 247 248 249 |
# File 'lib/valkey/commands/list_commands.rb', line 242 def blmpop(timeout, *keys, modifier: "LEFT", count: nil) raise ArgumentError, "Pick either LEFT or RIGHT" unless %w[LEFT RIGHT].include?(modifier) args = [timeout, keys.size, *keys, modifier] args << "COUNT" << Integer(count) if count send_command(RequestType::BLMPOP, args) end |
#blpop(*keys, timeout: 0) ⇒ nil, [String, String]
Remove and get the first element in a list, or block until one is available.
197 198 199 |
# File 'lib/valkey/commands/list_commands.rb', line 197 def blpop(*keys, timeout: 0) _bpop(keys, is_left: true, timeout: timeout) end |
#brpop(*keys, timeout: 0) ⇒ nil, [String, String]
Remove and get the last element in a list, or block until one is available.
219 220 221 |
# File 'lib/valkey/commands/list_commands.rb', line 219 def brpop(*keys, timeout: 0) _bpop(keys, is_left: false, timeout: timeout) end |
#brpoplpush(source, destination, timeout: 0) ⇒ nil, String
Remove the last element in a list, prepend it to another list and return it, or block until one is available.
Deprecated in Redis 6.2 in favour of BLMOVE so implemented as facade over #blmove
as BLMOVE src dst RIGHT LEFT. Note that glide-core has no command mapping for
RequestType::BRPopLPush, so dispatching it directly is not an option.
110 111 112 113 |
# File 'lib/valkey/commands/list_commands.rb', line 110 def brpoplpush(source, destination, timeout: 0) # TODO: https://github.com/valkey-io/valkey-glide-ruby/issues/242 blmove(source, destination, "RIGHT", "LEFT", timeout: timeout) end |
#lindex(key, index) ⇒ String
Get an element from a list by its index.
284 285 286 |
# File 'lib/valkey/commands/list_commands.rb', line 284 def lindex(key, index) send_command(RequestType::LINDEX, [key, Integer(index)]) end |
#linsert(key, where, pivot, value) ⇒ Integer
Insert an element before or after another element in a list.
296 297 298 |
# File 'lib/valkey/commands/list_commands.rb', line 296 def linsert(key, where, pivot, value) send_command(RequestType::LINSERT, [key, where, pivot, value]) end |
#llen(key) ⇒ Integer
Get the length of a list.
14 15 16 |
# File 'lib/valkey/commands/list_commands.rb', line 14 def llen(key) send_command(RequestType::LLEN, [key]) end |
#lmove(source, destination, where_source, where_destination) ⇒ nil, String
This command comes in place of the now deprecated RPOPLPUSH. Doing LMOVE RIGHT LEFT is equivalent.
Remove the first/last element in a list, append/prepend it to another list and return it.
31 32 33 34 35 |
# File 'lib/valkey/commands/list_commands.rb', line 31 def lmove(source, destination, where_source, where_destination) where_source, where_destination = _normalize_move_wheres(where_source, where_destination) send_command(RequestType::LMOVE, [source, destination, where_source, where_destination]) end |
#lmpop(*keys, modifier: "LEFT", count: nil) ⇒ Hash?
Pops one or more elements from the first non-empty list key from the list of provided key names.
268 269 270 271 272 273 274 275 276 277 |
# File 'lib/valkey/commands/list_commands.rb', line 268 def lmpop(*keys, modifier: "LEFT", count: nil) raise ArgumentError, "Pick either LEFT or RIGHT" unless %w[LEFT RIGHT].include?(modifier) args = [keys.size, *keys, modifier] args << "COUNT" << Integer(count) if count # pp args send_command(RequestType::LMPOP, args) end |
#lpop(key, count = nil) ⇒ nil, ...
Remove and get the first elements in a list.
160 161 162 163 164 |
# File 'lib/valkey/commands/list_commands.rb', line 160 def lpop(key, count = nil) args = [key] args << Integer(count) if count send_command(RequestType::LPOP, args) end |
#lpush(key, *value) ⇒ Integer
Prepend one or more values to a list, creating the list if it doesn't exist.
120 121 122 123 |
# File 'lib/valkey/commands/list_commands.rb', line 120 def lpush(key, *value) value.flatten!(1) send_command(RequestType::LPUSH, [key].concat(value)) end |
#lpushx(key, *value) ⇒ Integer
Prepend one or more values to a list, only if the list exists.
130 131 132 133 |
# File 'lib/valkey/commands/list_commands.rb', line 130 def lpushx(key, *value) value.flatten!(1) send_command(RequestType::LPUSHX, [key].concat(value)) end |
#lrange(key, start, stop) ⇒ Array<String>
Get a range of elements from a list.
306 307 308 |
# File 'lib/valkey/commands/list_commands.rb', line 306 def lrange(key, start, stop) send_command(RequestType::LRANGE, [key, Integer(start), Integer(stop)]) end |
#lrem(key, count, value) ⇒ Integer
Remove elements from a list.
319 320 321 |
# File 'lib/valkey/commands/list_commands.rb', line 319 def lrem(key, count, value) send_command(RequestType::LREM, [key, Integer(count), value]) end |
#lset(key, index, value) ⇒ String
Set the value of an element in a list by its index.
329 330 331 |
# File 'lib/valkey/commands/list_commands.rb', line 329 def lset(key, index, value) send_command(RequestType::LSET, [key, Integer(index), value]) end |
#ltrim(key, start, stop) ⇒ String
Trim a list to the specified range.
339 340 341 |
# File 'lib/valkey/commands/list_commands.rb', line 339 def ltrim(key, start, stop) send_command(RequestType::LTRIM, [key, Integer(start), Integer(stop)]) end |
#rpop(key, count = nil) ⇒ nil, ...
Remove and get the last elements in a list.
171 172 173 174 175 |
# File 'lib/valkey/commands/list_commands.rb', line 171 def rpop(key, count = nil) args = [key] args << Integer(count) if count send_command(RequestType::RPOP, args) end |
#rpoplpush(source, destination) ⇒ nil, String
Remove the last element in a list, prepend it to another list and return it.
Deprecated in Redis 6.2 in favour of LMOVE so implemented as facade over #lmove
as LMOVE src dst RIGHT LEFT``. Note that glide-core has no command mapping for RequestType::RPopLPush`, so dispatching it directly is not an option.
84 85 86 87 |
# File 'lib/valkey/commands/list_commands.rb', line 84 def rpoplpush(source, destination) # TODO: https://github.com/valkey-io/valkey-glide-ruby/issues/242 lmove(source, destination, "RIGHT", "LEFT") end |
#rpush(key, *value) ⇒ Integer
Append one or more values to a list, creating the list if it doesn't exist.
140 141 142 143 |
# File 'lib/valkey/commands/list_commands.rb', line 140 def rpush(key, *value) value.flatten!(1) send_command(RequestType::RPUSH, [key].concat(value)) end |
#rpushx(key, *value) ⇒ Integer
Append one or more values to a list, only if the list exists.
150 151 152 153 |
# File 'lib/valkey/commands/list_commands.rb', line 150 def rpushx(key, *value) value.flatten!(1) send_command(RequestType::RPUSHX, [key].concat(value)) end |