Module: Redis::Commands::Keys
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Defined in: | lib/redis/commands/keys.rb |
Instance Method Summary
-
#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, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Boolean
Set a key's time to live in seconds.
-
#expireat(key, unix_time, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Boolean
Set the expiration for a key as a UNIX timestamp.
-
#expiretime(key) ⇒ Integer
Get a key's expiry time specified as number of seconds from UNIX Epoch.
-
#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)
-
#persist(key) ⇒ Boolean
Remove the expiration from a key.
-
#pexpire(key, milliseconds, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Boolean
Set a key's time to live in milliseconds.
-
#pexpireat(key, ms_unix_time, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Boolean
Set the expiration for a key as number of milliseconds from UNIX Epoch.
-
#pexpiretime(key) ⇒ Integer
Get a key's expiry time specified 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.
- #_scan(command, cursor, args, match: nil, count: nil, type: nil, &block) private
Instance Method Details
#_scan(command, cursor, args, match: nil, count: nil, type: nil, &block) (private)
[ GitHub ]# File 'lib/redis/commands/keys.rb', line 447
def _scan(command, cursor, args, match: nil, count: nil, type: nil, &block) # SSCAN/ZSCAN/HSCAN already prepend the key to +args+. args << cursor args << "MATCH" << match if match args << "COUNT" << Integer(count) if count args << "TYPE" << type if type send_command([command] + args, &block) end
#copy(source, destination, db: nil, replace: false) ⇒ Boolean
Copy a value from one key to another.
# File 'lib/redis/commands/keys.rb', line 349
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.
# File 'lib/redis/commands/keys.rb', line 252
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.
# File 'lib/redis/commands/keys.rb', line 203
def dump(key) send_command([:dump, key]) end
#exists(*keys) ⇒ Integer
Determine how many of the keys exists.
# File 'lib/redis/commands/keys.rb', line 271
def exists(*keys) send_command([:exists, *keys]) end
#exists?(*keys) ⇒ Boolean
Determine if any of the keys exists.
# File 'lib/redis/commands/keys.rb', line 279
def exists?(*keys) send_command([:exists, *keys]) do |value| value > 0 end end
#expire(key, seconds, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Boolean
Set a key's time to live in seconds.
# File 'lib/redis/commands/keys.rb', line 82
def expire(key, seconds, nx: nil, xx: nil, gt: nil, lt: nil) args = [:expire, key, Integer(seconds)] args << "NX" if nx args << "XX" if xx args << "GT" if gt args << "LT" if lt send_command(args, &Boolify) end
#expireat(key, unix_time, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Boolean
Set the expiration for a key as a UNIX timestamp.
# File 'lib/redis/commands/keys.rb', line 102
def expireat(key, unix_time, nx: nil, xx: nil, gt: nil, lt: nil) args = [:expireat, key, Integer(unix_time)] args << "NX" if nx args << "XX" if xx args << "GT" if gt args << "LT" if lt send_command(args, &Boolify) end
#expiretime(key) ⇒ Integer
Get a key's expiry time specified as number of seconds from UNIX Epoch
# File 'lib/redis/commands/keys.rb', line 116
def expiretime(key) send_command([:expiretime, key]) end
#keys(pattern = "*") ⇒ Array
<String
>
# File 'lib/redis/commands/keys.rb', line 291
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.
# File 'lib/redis/commands/keys.rb', line 234
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.
# File 'lib/redis/commands/keys.rb', line 320
def move(key, db) send_command([:move, key, db], &Boolify) end
#object(*args)
[ GitHub ]# File 'lib/redis/commands/keys.rb', line 357
def object(*args) send_command([:object] + args) end
#persist(key) ⇒ Boolean
Remove the expiration from a key.
# File 'lib/redis/commands/keys.rb', line 68
def persist(key) send_command([:persist, key], &Boolify) end
#pexpire(key, milliseconds, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Boolean
Set a key's time to live in milliseconds.
# File 'lib/redis/commands/keys.rb', line 146
def pexpire(key, milliseconds, nx: nil, xx: nil, gt: nil, lt: nil) args = [:pexpire, key, Integer(milliseconds)] args << "NX" if nx args << "XX" if xx args << "GT" if gt args << "LT" if lt send_command(args, &Boolify) end
#pexpireat(key, ms_unix_time, nx: nil, xx: nil, gt: nil, lt: nil) ⇒ Boolean
Set the expiration for a key as number of milliseconds from UNIX Epoch.
# File 'lib/redis/commands/keys.rb', line 166
def pexpireat(key, ms_unix_time, nx: nil, xx: nil, gt: nil, lt: nil) args = [:pexpireat, key, Integer(ms_unix_time)] args << "NX" if nx args << "XX" if xx args << "GT" if gt args << "LT" if lt send_command(args, &Boolify) end
#pexpiretime(key) ⇒ Integer
Get a key's expiry time specified as number of milliseconds from UNIX Epoch
# File 'lib/redis/commands/keys.rb', line 180
def pexpiretime(key) send_command([:pexpiretime, key]) 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.
# File 'lib/redis/commands/keys.rb', line 195
def pttl(key) send_command([:pttl, key]) end
#randomkey ⇒ String
Return a random key from the keyspace.
# File 'lib/redis/commands/keys.rb', line 364
def randomkey send_command([:randomkey]) end
#rename(old_name, new_name) ⇒ String
Rename a key. If the new key already exists it is overwritten.
# File 'lib/redis/commands/keys.rb', line 373
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.
# File 'lib/redis/commands/keys.rb', line 382
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.
# File 'lib/redis/commands/keys.rb', line 216
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
+
[ GitHub ]
# File 'lib/redis/commands/keys.rb', line 27
def scan(cursor, ** ) _scan(:scan, cursor, [], ** ) end
#scan_each(**options, &block) ⇒ Enumerator
[ GitHub ]
#sort(key, by: nil, limit: nil, get: nil, order: nil, store: nil) ⇒ Array
<String
>, ...
Sort the elements in a list, set or sorted set.
# File 'lib/redis/commands/keys.rb', line 411
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.
# File 'lib/redis/commands/keys.rb', line 132
def ttl(key) send_command([:ttl, key]) end
#type(key) ⇒ String
Determine the type stored at key.
# File 'lib/redis/commands/keys.rb', line 441
def type(key) send_command([:type, key]) end
#unlink(*keys) ⇒ Integer
Unlink one or more keys.
# File 'lib/redis/commands/keys.rb', line 263
def unlink(*keys) send_command([:unlink] + keys) end