Module: Redis::Commands::Strings

Included in:
Redis::Commands
Defined in:
lib/redis/commands/strings.rb

Instance Method Summary collapse

Instance Method Details

#append(key, value) ⇒ Integer

Append a value to a key.



255
256
257
# File 'lib/redis/commands/strings.rb', line 255

def append(key, value)
  send_command([:append, key, value])
end

#decr(key) ⇒ Integer

Decrement the integer value of a key by one.

Examples:

redis.decr("value")
  # => 4


14
15
16
# File 'lib/redis/commands/strings.rb', line 14

def decr(key)
  send_command([:decr, key])
end

#decrby(key, decrement) ⇒ Integer

Decrement the integer value of a key by the given number.

Examples:

redis.decrby("value", 5)
  # => 0


27
28
29
# File 'lib/redis/commands/strings.rb', line 27

def decrby(key, decrement)
  send_command([:decrby, key, Integer(decrement)])
end

#get(key) ⇒ String

Get the value of a key.



190
191
192
# File 'lib/redis/commands/strings.rb', line 190

def get(key)
  send_command([:get, key])
end

#getdel(key) ⇒ String

Get the value of key and delete the key. This command is similar to GET, except for the fact that it also deletes the key on success.



275
276
277
# File 'lib/redis/commands/strings.rb', line 275

def getdel(key)
  send_command([:getdel, 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. GETEX is similar to GET, but is a write command with additional options. When no options are provided, GETEX behaves like GET.



293
294
295
296
297
298
299
300
301
302
# File 'lib/redis/commands/strings.rb', line 293

def getex(key, ex: nil, px: nil, exat: nil, pxat: nil, persist: false)
  args = [:getex, 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(args)
end

#getrange(key, start, stop) ⇒ Integer

Get a substring of the string stored at a key.



246
247
248
# File 'lib/redis/commands/strings.rb', line 246

def getrange(key, start, stop)
  send_command([:getrange, key, Integer(start), Integer(stop)])
end

#getset(key, value) ⇒ String

Set the string value of a key and return its old value.



265
266
267
# File 'lib/redis/commands/strings.rb', line 265

def getset(key, value)
  send_command([:getset, key, value.to_s])
end

#incr(key) ⇒ Integer

Increment the integer value of a key by one.

Examples:

redis.incr("value")
  # => 6


39
40
41
# File 'lib/redis/commands/strings.rb', line 39

def incr(key)
  send_command([:incr, key])
end

#incrby(key, increment) ⇒ Integer

Increment the integer value of a key by the given integer number.

Examples:

redis.incrby("value", 5)
  # => 10


52
53
54
# File 'lib/redis/commands/strings.rb', line 52

def incrby(key, increment)
  send_command([:incrby, key, Integer(increment)])
end

#incrbyfloat(key, increment) ⇒ Float

Increment the numeric value of a key by the given float number.

Examples:

redis.incrbyfloat("value", 1.23)
  # => 1.23


65
66
67
# File 'lib/redis/commands/strings.rb', line 65

def incrbyfloat(key, increment)
  send_command([:incrbyfloat, key, Float(increment)], &Floatify)
end

#mapped_mget(*keys) ⇒ Hash

Get the values of all the given keys.

Examples:

redis.mapped_mget("key1", "key2")
  # => { "key1" => "v1", "key2" => "v2" }

See Also:



219
220
221
222
223
224
225
226
227
# File 'lib/redis/commands/strings.rb', line 219

def mapped_mget(*keys)
  mget(*keys) do |reply|
    if reply.is_a?(Array)
      Hash[keys.zip(reply)]
    else
      reply
    end
  end
end

#mapped_mset(hash) ⇒ String

Set one or more values.

Examples:

redis.mapped_mset({ "f1" => "v1", "f2" => "v2" })
  # => "OK"

See Also:



154
155
156
# File 'lib/redis/commands/strings.rb', line 154

def mapped_mset(hash)
  mset(hash.flatten)
end

#mapped_msetnx(hash) ⇒ Boolean

Set one or more values, only if none of the keys exist.

Examples:

redis.mapped_msetnx({ "key1" => "v1", "key2" => "v2" })
  # => true

See Also:



182
183
184
# File 'lib/redis/commands/strings.rb', line 182

def mapped_msetnx(hash)
  msetnx(hash.flatten)
end

#mget(*keys, &blk) ⇒ Array<String>

Get the values of all the given keys.

Examples:

redis.mget("key1", "key2")
  # => ["v1", "v2"]

See Also:



204
205
206
207
# File 'lib/redis/commands/strings.rb', line 204

def mget(*keys, &blk)
  keys.flatten!(1)
  send_command([:mget, *keys], &blk)
end

#mset(*args) ⇒ String

Set one or more values.

Examples:

redis.mset("key1", "v1", "key2", "v2")
  # => "OK"

See Also:



140
141
142
# File 'lib/redis/commands/strings.rb', line 140

def mset(*args)
  send_command([:mset] + args)
end

#msetnx(*args) ⇒ Boolean

Set one or more values, only if none of the keys exist.

Examples:

redis.msetnx("key1", "v1", "key2", "v2")
  # => true

See Also:



168
169
170
# File 'lib/redis/commands/strings.rb', line 168

def msetnx(*args)
  send_command([:msetnx, *args], &Boolify)
end

#psetex(key, ttl, value) ⇒ String

Set the time to live in milliseconds of a key.



117
118
119
# File 'lib/redis/commands/strings.rb', line 117

def psetex(key, ttl, value)
  send_command([:psetex, 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, Boolean

Set the string value of a key.



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/redis/commands/strings.rb', line 83

def set(key, value, ex: nil, px: nil, exat: nil, pxat: nil, nx: nil, xx: nil, keepttl: nil, get: nil)
  args = [:set, 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

  if nx || xx
    send_command(args, &BoolifySet)
  else
    send_command(args)
  end
end

#setex(key, ttl, value) ⇒ String

Set the time to live in seconds of a key.



107
108
109
# File 'lib/redis/commands/strings.rb', line 107

def setex(key, ttl, value)
  send_command([:setex, key, Integer(ttl), value.to_s])
end

#setnx(key, value) ⇒ Boolean

Set the value of a key, only if the key does not exist.



126
127
128
# File 'lib/redis/commands/strings.rb', line 126

def setnx(key, value)
  send_command([:setnx, key, value.to_s], &Boolify)
end

#setrange(key, offset, value) ⇒ Integer

Overwrite part of a string at key starting at the specified offset.



235
236
237
# File 'lib/redis/commands/strings.rb', line 235

def setrange(key, offset, value)
  send_command([:setrange, key, Integer(offset), value.to_s])
end

#strlen(key) ⇒ Integer

Get the length of the value stored in a key.



309
310
311
# File 'lib/redis/commands/strings.rb', line 309

def strlen(key)
  send_command([:strlen, key])
end