Module: Redis::Commands::Keys
- Included in:
- Redis::Commands
- Defined in:
- lib/redis/commands/keys.rb
Instance Method Summary collapse
- #_exists(*keys) ⇒ Object
-
#copy(source, destination, db: nil, replace: false) ⇒ Boolean
Copy a value from one key to another.
-
#del(*keys) ⇒ Integer
Delete one or more keys.
-
#dump(key) ⇒ String
Return a serialized version of the value stored at a key.
-
#exists(*keys) ⇒ Integer
Determine how many of the keys exists.
-
#exists?(*keys) ⇒ Boolean
Determine if any of the keys exists.
-
#expire(key, seconds) ⇒ Boolean
Set a key’s time to live in seconds.
-
#expireat(key, unix_time) ⇒ Boolean
Set the expiration for a key as a UNIX timestamp.
-
#keys(pattern = "*") ⇒ Array<String>
Find all keys matching the given pattern.
-
#migrate(key, options) ⇒ String
Transfer a key from the connected instance to another instance.
-
#move(key, db) ⇒ Boolean
Move a key to another database.
- #object(*args) ⇒ Object
-
#persist(key) ⇒ Boolean
Remove the expiration from a key.
-
#pexpire(key, milliseconds) ⇒ Boolean
Set a key’s time to live in milliseconds.
-
#pexpireat(key, ms_unix_time) ⇒ Boolean
Set the expiration for a key as number of milliseconds from UNIX Epoch.
-
#pttl(key) ⇒ Integer
Get the time to live (in milliseconds) for a key.
-
#randomkey ⇒ String
Return a random key from the keyspace.
-
#rename(old_name, new_name) ⇒ String
Rename a key.
-
#renamenx(old_name, new_name) ⇒ Boolean
Rename a key, only if the new key does not exist.
-
#restore(key, ttl, serialized_value, replace: nil) ⇒ String
Create a key using the serialized value, previously obtained using DUMP.
-
#scan(cursor, **options) ⇒ String+
Scan the keyspace.
-
#scan_each(**options, &block) ⇒ Enumerator
Scan the keyspace.
-
#sort(key, by: nil, limit: nil, get: nil, order: nil, store: nil) ⇒ Array<String>, ...
Sort the elements in a list, set or sorted set.
-
#ttl(key) ⇒ Integer
Get the time to live (in seconds) for a key.
-
#type(key) ⇒ String
Determine the type stored at key.
-
#unlink(*keys) ⇒ Integer
Unlink one or more keys.
Instance Method Details
#_exists(*keys) ⇒ Object
225 226 227 |
# File 'lib/redis/commands/keys.rb', line 225 def _exists(*keys) send_command([:exists, *keys]) end |
#copy(source, destination, db: nil, replace: false) ⇒ Boolean
Copy a value from one key to another.
301 302 303 304 305 306 307 |
# File 'lib/redis/commands/keys.rb', line 301 def copy(source, destination, db: nil, replace: false) command = [:copy, source, destination] command << "DB" << db if db command << "REPLACE" if replace send_command(command, &Boolify) end |
#del(*keys) ⇒ Integer
Delete one or more keys.
188 189 190 191 192 193 |
# File 'lib/redis/commands/keys.rb', line 188 def del(*keys) keys.flatten!(1) return 0 if keys.empty? send_command([:del] + keys) end |
#dump(key) ⇒ String
Return a serialized version of the value stored at a key.
139 140 141 |
# File 'lib/redis/commands/keys.rb', line 139 def dump(key) send_command([:dump, key]) end |
#exists(*keys) ⇒ Integer
Determine how many of the keys exists.
207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
# File 'lib/redis/commands/keys.rb', line 207 def exists(*keys) if !Redis.exists_returns_integer && keys.size == 1 if Redis.exists_returns_integer.nil? = "`Redis#exists(key)` will return an Integer in redis-rb 4.3. `exists?` returns a boolean, you " \ "should use it instead. To opt-in to the new behavior now you can set Redis.exists_returns_integer = " \ "true. To disable this message and keep the current (boolean) behaviour of 'exists' you can set " \ "`Redis.exists_returns_integer = false`, but this option will be removed in 5.0.0. " \ "(#{::Kernel.caller(1, 1).first})\n" ::Redis.deprecate!() end exists?(*keys) else _exists(*keys) end end |
#exists?(*keys) ⇒ Boolean
Determine if any of the keys exists.
233 234 235 236 237 |
# File 'lib/redis/commands/keys.rb', line 233 def exists?(*keys) send_command([:exists, *keys]) do |value| value > 0 end end |
#expire(key, seconds) ⇒ Boolean
Set a key’s time to live in seconds.
73 74 75 |
# File 'lib/redis/commands/keys.rb', line 73 def expire(key, seconds) send_command([:expire, key, seconds], &Boolify) end |
#expireat(key, unix_time) ⇒ Boolean
Set the expiration for a key as a UNIX timestamp.
82 83 84 |
# File 'lib/redis/commands/keys.rb', line 82 def expireat(key, unix_time) send_command([:expireat, key, unix_time], &Boolify) end |
#keys(pattern = "*") ⇒ Array<String>
Find all keys matching the given pattern.
243 244 245 246 247 248 249 250 251 |
# File 'lib/redis/commands/keys.rb', line 243 def keys(pattern = "*") send_command([:keys, pattern]) do |reply| if reply.is_a?(String) reply.split(" ") else reply end end end |
#migrate(key, options) ⇒ String
Transfer a key from the connected instance to another instance.
170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/redis/commands/keys.rb', line 170 def migrate(key, ) args = [:migrate] args << ([:host] || raise(':host not specified')) args << ([:port] || raise(':port not specified')) args << (key.is_a?(String) ? key : '') args << ([:db] || @client.db).to_i args << ([:timeout] || @client.timeout).to_i args << 'COPY' if [:copy] args << 'REPLACE' if [:replace] args += ['KEYS', *key] if key.is_a?(Array) send_command(args) end |
#move(key, db) ⇒ Boolean
Move a key to another database.
272 273 274 |
# File 'lib/redis/commands/keys.rb', line 272 def move(key, db) send_command([:move, key, db], &Boolify) end |
#object(*args) ⇒ Object
309 310 311 |
# File 'lib/redis/commands/keys.rb', line 309 def object(*args) send_command([:object] + args) end |
#persist(key) ⇒ Boolean
Remove the expiration from a key.
64 65 66 |
# File 'lib/redis/commands/keys.rb', line 64 def persist(key) send_command([:persist, key], &Boolify) end |
#pexpire(key, milliseconds) ⇒ Boolean
Set a key’s time to live in milliseconds.
107 108 109 |
# File 'lib/redis/commands/keys.rb', line 107 def pexpire(key, milliseconds) send_command([:pexpire, key, milliseconds], &Boolify) end |
#pexpireat(key, ms_unix_time) ⇒ Boolean
Set the expiration for a key as number of milliseconds from UNIX Epoch.
116 117 118 |
# File 'lib/redis/commands/keys.rb', line 116 def pexpireat(key, ms_unix_time) send_command([:pexpireat, key, ms_unix_time], &Boolify) end |
#pttl(key) ⇒ Integer
Get the time to live (in milliseconds) for a key.
In Redis 2.6 or older the command returns -1 if the key does not exist or if the key exist but has no associated expire.
Starting with Redis 2.8 the return value in case of error changed:
- The command returns -2 if the key does not exist.
- The command returns -1 if the key exists but has no associated expire.
131 132 133 |
# File 'lib/redis/commands/keys.rb', line 131 def pttl(key) send_command([:pttl, key]) end |
#randomkey ⇒ String
Return a random key from the keyspace.
316 317 318 |
# File 'lib/redis/commands/keys.rb', line 316 def randomkey send_command([:randomkey]) end |
#rename(old_name, new_name) ⇒ String
Rename a key. If the new key already exists it is overwritten.
325 326 327 |
# File 'lib/redis/commands/keys.rb', line 325 def rename(old_name, new_name) send_command([:rename, old_name, new_name]) end |
#renamenx(old_name, new_name) ⇒ Boolean
Rename a key, only if the new key does not exist.
334 335 336 |
# File 'lib/redis/commands/keys.rb', line 334 def renamenx(old_name, new_name) send_command([:renamenx, old_name, new_name], &Boolify) end |
#restore(key, ttl, serialized_value, replace: nil) ⇒ String
Create a key using the serialized value, previously obtained using DUMP.
152 153 154 155 156 157 |
# File 'lib/redis/commands/keys.rb', line 152 def restore(key, ttl, serialized_value, replace: nil) args = [:restore, key, ttl, serialized_value] args << 'REPLACE' if replace send_command(args) end |
#scan(cursor, **options) ⇒ String+
Scan the keyspace
25 26 27 |
# File 'lib/redis/commands/keys.rb', line 25 def scan(cursor, **) _scan(:scan, cursor, [], **) end |
#scan_each(**options, &block) ⇒ Enumerator
Scan the keyspace
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/redis/commands/keys.rb', line 49 def scan_each(**, &block) return to_enum(:scan_each, **) unless block_given? cursor = 0 loop do cursor, keys = scan(cursor, **) keys.each(&block) break if cursor == "0" end end |
#sort(key, by: nil, limit: nil, get: nil, order: nil, store: nil) ⇒ Array<String>, ...
Sort the elements in a list, set or sorted set.
363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 |
# File 'lib/redis/commands/keys.rb', line 363 def sort(key, by: nil, limit: nil, get: nil, order: nil, store: nil) args = [:sort, key] args << "BY" << by if by if limit args << "LIMIT" args.concat(limit) end get = Array(get) get.each do |item| args << "GET" << item end args.concat(order.split(" ")) if order args << "STORE" << store if store send_command(args) do |reply| if get.size > 1 && !store reply.each_slice(get.size).to_a if reply else reply end end end |
#ttl(key) ⇒ Integer
Get the time to live (in seconds) for a key.
In Redis 2.6 or older the command returns -1 if the key does not exist or if the key exist but has no associated expire.
Starting with Redis 2.8 the return value in case of error changed:
- The command returns -2 if the key does not exist.
- The command returns -1 if the key exists but has no associated expire.
98 99 100 |
# File 'lib/redis/commands/keys.rb', line 98 def ttl(key) send_command([:ttl, key]) end |
#type(key) ⇒ String
Determine the type stored at key.
393 394 395 |
# File 'lib/redis/commands/keys.rb', line 393 def type(key) send_command([:type, key]) end |
#unlink(*keys) ⇒ Integer
Unlink one or more keys.
199 200 201 |
# File 'lib/redis/commands/keys.rb', line 199 def unlink(*keys) send_command([:unlink] + keys) end |