Module: Valkey::Commands::StringCommands
- Included in:
- Valkey::Commands
- Defined in:
- lib/valkey/commands/string_commands.rb
Overview
This module contains commands on the String data type.
Instance Method Summary collapse
-
#append(key, value) ⇒ Integer
Append a value to a key.
-
#decr(key) ⇒ Integer
Decrement the integer value of a key by one.
-
#decrby(key, decrement) ⇒ Integer
Decrement the integer value of a key by the given number.
-
#get(key) ⇒ String
Get the value of a key.
-
#getdel(key) ⇒ String?
Get the value of key and delete it.
-
#getex(key, ex: nil, px: nil, exat: nil, pxat: nil, persist: false) ⇒ String?
Get the value of key and optionally set its expiration.
-
#getrange(key, start, stop) ⇒ String
Get a substring of the string stored at key.
-
#getset(key, value) ⇒ String?
Atomically set
keytovalueand return the previous value. -
#incr(key) ⇒ Integer
Increment the integer value of a key by one.
-
#incrby(key, increment) ⇒ Integer
Increment the integer value of a key by the given integer number.
-
#incrbyfloat(key, increment) ⇒ Float
Increment the numeric value of a key by the given float number.
-
#lcs(key1, key2, len: nil, idx: nil, min_match_len: nil, with_match_len: nil) ⇒ String, ...
Find the longest common subsequence between two strings.
-
#mapped_mget(*keys) ⇒ Hash
Get the values of all the given keys.
-
#mapped_mset(hash) ⇒ String
Set one or more values.
-
#mapped_msetnx(hash) ⇒ Boolean
Set one or more values, only if none of the keys exist.
-
#mget(*keys, &blk) ⇒ Array<String>
Get the values of all the given keys.
-
#mset(*args) ⇒ String
Set one or more values.
-
#msetnx(*args) ⇒ Boolean
Set one or more values, only if none of the keys exist.
-
#psetex(key, ttl, value) ⇒ String
Set the time to live in milliseconds of a key.
-
#set(key, value, ex: nil, px: nil, exat: nil, pxat: nil, nx: nil, xx: nil, keepttl: nil, get: nil) ⇒ String?
Set the string value of a key.
-
#setex(key, ttl, value) ⇒ String
Set the time to live in seconds of a key.
-
#setnx(key, value) ⇒ Boolean
Set the value of a key, only if the key does not exist.
-
#setrange(key, offset, value) ⇒ Integer
Overwrite part of a string at key starting at the specified offset.
-
#strlen(key) ⇒ Integer
Get the length of the value stored in a key.
Instance Method Details
#append(key, value) ⇒ Integer
Append a value to a key.
276 277 278 |
# File 'lib/valkey/commands/string_commands.rb', line 276 def append(key, value) send_command(RequestType::APPEND, [key, value]) end |
#decr(key) ⇒ Integer
Decrement the integer value of a key by one.
18 19 20 |
# File 'lib/valkey/commands/string_commands.rb', line 18 def decr(key) send_command(RequestType::DECR, [key]) end |
#decrby(key, decrement) ⇒ Integer
Decrement the integer value of a key by the given number.
31 32 33 |
# File 'lib/valkey/commands/string_commands.rb', line 31 def decrby(key, decrement) send_command(RequestType::DECR_BY, [key, Integer(decrement)]) end |
#get(key) ⇒ String
Get the value of a key.
200 201 202 |
# File 'lib/valkey/commands/string_commands.rb', line 200 def get(key) send_command(RequestType::GET, [key]) end |
#getdel(key) ⇒ String?
Get the value of key and delete it.
284 285 286 |
# File 'lib/valkey/commands/string_commands.rb', line 284 def getdel(key) send_command(RequestType::GET_DEL, [key]) end |
#getex(key, ex: nil, px: nil, exat: nil, pxat: nil, persist: false) ⇒ String?
Get the value of key and optionally set its expiration.
298 299 300 301 302 303 304 305 306 307 |
# File 'lib/valkey/commands/string_commands.rb', line 298 def getex(key, ex: nil, px: nil, exat: nil, pxat: nil, persist: false) args = [key] args << "EX" << Integer(ex) if ex args << "PX" << Integer(px) if px args << "EXAT" << Integer(exat) if exat args << "PXAT" << Integer(pxat) if pxat args << "PERSIST" if persist send_command(RequestType::GET_EX, args) end |
#getrange(key, start, stop) ⇒ String
Get a substring of the string stored at key.
267 268 269 |
# File 'lib/valkey/commands/string_commands.rb', line 267 def getrange(key, start, stop) send_command(RequestType::GET_RANGE, [key, start, stop]) end |
#getset(key, value) ⇒ String?
Atomically set key to value and return the previous value.
Implemented as SET key value GET (Redis 6.2+ / Valkey 7+). This matches GETSET
and avoids RequestType::GET_SET, which the Glide FFI layer does not implement yet.
212 213 214 |
# File 'lib/valkey/commands/string_commands.rb', line 212 def getset(key, value) set(key, value, get: true) end |
#incr(key) ⇒ Integer
Increment the integer value of a key by one.
43 44 45 |
# File 'lib/valkey/commands/string_commands.rb', line 43 def incr(key) send_command(RequestType::INCR, [key]) end |
#incrby(key, increment) ⇒ Integer
Increment the integer value of a key by the given integer number.
56 57 58 |
# File 'lib/valkey/commands/string_commands.rb', line 56 def incrby(key, increment) send_command(RequestType::INCR_BY, [key, Integer(increment)]) end |
#incrbyfloat(key, increment) ⇒ Float
Increment the numeric value of a key by the given float number.
69 70 71 |
# File 'lib/valkey/commands/string_commands.rb', line 69 def incrbyfloat(key, increment) send_command(RequestType::INCR_BY_FLOAT, [key, increment]) end |
#lcs(key1, key2, len: nil, idx: nil, min_match_len: nil, with_match_len: nil) ⇒ String, ...
Find the longest common subsequence between two strings.
327 328 329 330 331 332 333 334 335 |
# File 'lib/valkey/commands/string_commands.rb', line 327 def lcs(key1, key2, len: nil, idx: nil, min_match_len: nil, with_match_len: nil) args = [key1, key2] args << "LEN" if len args << "IDX" if idx args << "MINMATCHLEN" << min_match_len if min_match_len args << "WITHMATCHLEN" if with_match_len send_command(RequestType::LCS, args) end |
#mapped_mget(*keys) ⇒ Hash
Get the values of all the given keys.
241 242 243 244 245 246 247 248 249 |
# File 'lib/valkey/commands/string_commands.rb', line 241 def mapped_mget(*keys) mget(*keys) do |reply| if reply.is_a?(Array) keys.zip(reply).to_h else reply end end end |
#mapped_mset(hash) ⇒ String
Set one or more values.
164 165 166 |
# File 'lib/valkey/commands/string_commands.rb', line 164 def mapped_mset(hash) mset(*hash.flatten) end |
#mapped_msetnx(hash) ⇒ Boolean
Set one or more values, only if none of the keys exist.
192 193 194 |
# File 'lib/valkey/commands/string_commands.rb', line 192 def mapped_msetnx(hash) msetnx(*hash.flatten) end |
#mget(*keys, &blk) ⇒ Array<String>
Get the values of all the given keys.
226 227 228 229 |
# File 'lib/valkey/commands/string_commands.rb', line 226 def mget(*keys, &blk) keys.flatten!(1) send_command(RequestType::MGET, keys, &blk) end |
#mset(*args) ⇒ String
Set one or more values.
150 151 152 |
# File 'lib/valkey/commands/string_commands.rb', line 150 def mset(*args) send_command(RequestType::MSET, args) end |
#msetnx(*args) ⇒ Boolean
Set one or more values, only if none of the keys exist.
178 179 180 |
# File 'lib/valkey/commands/string_commands.rb', line 178 def msetnx(*args) send_command(RequestType::MSET_NX, args) end |
#psetex(key, ttl, value) ⇒ String
Set the time to live in milliseconds of a key.
120 121 122 |
# File 'lib/valkey/commands/string_commands.rb', line 120 def psetex(key, ttl, value) send_command(RequestType::PSET_EX, [key, Integer(ttl), value.to_s]) end |
#set(key, value, ex: nil, px: nil, exat: nil, pxat: nil, nx: nil, xx: nil, keepttl: nil, get: nil) ⇒ String?
Set the string value of a key.
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/valkey/commands/string_commands.rb', line 87 def set(key, value, ex: nil, px: nil, exat: nil, pxat: nil, nx: nil, xx: nil, keepttl: nil, get: nil) # A non-String value (e.g. an Array) must become ONE opaque value here, not # get flattened as if it were a multi-value list -- see build_command_args's # flat_map fix for why this must happen before command_args is built. args = [key, value.to_s] args << "EX" << Integer(ex) if ex args << "PX" << Integer(px) if px args << "EXAT" << Integer(exat) if exat args << "PXAT" << Integer(pxat) if pxat args << "NX" if nx args << "XX" if xx args << "KEEPTTL" if keepttl args << "GET" if get send_command(RequestType::SET, args) end |
#setex(key, ttl, value) ⇒ String
Set the time to live in seconds of a key.
110 111 112 |
# File 'lib/valkey/commands/string_commands.rb', line 110 def setex(key, ttl, value) send_command(RequestType::SET_EX, [key, Integer(ttl), value.to_s]) end |
#setnx(key, value) ⇒ Boolean
Set the value of a key, only if the key does not exist.
129 130 131 132 133 134 135 136 137 138 |
# File 'lib/valkey/commands/string_commands.rb', line 129 def setnx(key, value) # &Utils::Boolify (not glide-core's generic Boolean-coercion table) is # deliberately used here: glide-core's per-command coercion is keyed by # command name alone, so it can't distinguish this dedicated SETNX # RequestType from a raw `customCommand(["SETNX", ...])` call, which # other GLIDE bindings' existing contracts expect to keep returning a # plain 0/1 integer. Doing the conversion here keeps it scoped to this # one Ruby-level method - see hexists/hsetnx for the same pattern. send_command(RequestType::SET_NX, [key, value.to_s], &Utils::Boolify) end |
#setrange(key, offset, value) ⇒ Integer
Overwrite part of a string at key starting at the specified offset.
257 258 259 |
# File 'lib/valkey/commands/string_commands.rb', line 257 def setrange(key, offset, value) send_command(RequestType::SET_RANGE, [key, Integer(offset), value.to_s]) end |
#strlen(key) ⇒ Integer
Get the length of the value stored in a key.
313 314 315 |
# File 'lib/valkey/commands/string_commands.rb', line 313 def strlen(key) send_command(RequestType::STRLEN, [key]) end |