VERSION | = | "3.0.3" |
client | [R] |
Append a value to a key.
@param [String] key @param [String] value value to append @return [Fixnum] length of the string after appending
Authenticate to the server.
@param [String] password must match the password specified in the
`requirepass` directive in the configuration file
@return [String] `OK`
Perform a bitwise operation between strings and store the resulting string in a key.
@param [String] operation e.g. `and`, `or`, `xor`, `not` @param [String] destkey destination key @param [String, Array<String>] keys one or more source keys to perform `operation` @return [Fixnum] the length of the string stored in `destkey`
Remove and get the first element in a list, or block until one is available.
@example With timeout
list, element = redis.blpop("list", :timeout => 5) # => nil on timeout # => ["list", "element"] on success
@example Without timeout
list, element = redis.blpop("list") # => ["list", "element"]
@example Blocking pop on multiple lists
list, element = redis.blpop(["list", "another_list"]) # => ["list", "element"]
@param [String, Array<String>] keys one or more keys to perform the
blocking pop on
@param [Hash] options
- `:timeout => Fixnum`: timeout in seconds, defaults to no timeout
@return [nil, [String, String]]
- `nil` when the operation timed out - tuple of the list that was popped from and element was popped otherwise
Remove and get the last element in a list, or block until one is available.
@param [String, Array<String>] keys one or more keys to perform the
blocking pop on
@param [Hash] options
- `:timeout => Fixnum`: timeout in seconds, defaults to no timeout
@return [nil, [String, String]]
- `nil` when the operation timed out - tuple of the list that was popped from and element was popped otherwise
@see blpop
Pop a value from a list, push it to another list and return it; or block until one is available.
@param [String] source source key @param [String] destination destination key @param [Hash] options
- `:timeout => Fixnum`: timeout in seconds, defaults to no timeout
@return [nil, String]
- `nil` when the operation timed out - the element was popped and pushed otherwise
Decrement the integer value of a key by one.
@example
redis.decr("value") # => 4
@param [String] key @return [Fixnum] value after decrementing it
Decrement the integer value of a key by the given number.
@example
redis.decrby("value", 5) # => 0
@param [String] key @param [Fixnum] decrement @return [Fixnum] value after decrementing it
Return a serialized version of the value stored at a key.
@param [String] key @return [String] serialized_value
Evaluate Lua script.
@example EVAL without KEYS nor ARGV
redis.eval("return 1") # => 1
@example EVAL with KEYS and ARGV as array arguments
redis.eval("return { KEYS, ARGV }", ["k1", "k2"], ["a1", "a2"]) # => [["k1", "k2"], ["a1", "a2"]]
@example EVAL with KEYS and ARGV in a hash argument
redis.eval("return { KEYS, ARGV }", :keys => ["k1", "k2"], :argv => ["a1", "a2"]) # => [["k1", "k2"], ["a1", "a2"]]
@param [Array<String>] keys optional array with keys to pass to the script @param [Array<String>] argv optional array with arguments to pass to the script @param [Hash] options
- `:keys => Array<String>`: optional array with keys to pass to the script - `:argv => Array<String>`: optional array with arguments to pass to the script
@return depends on the script
Evaluate Lua script by its SHA.
@example EVALSHA without KEYS nor ARGV
redis.evalsha(sha) # => <depends on script>
@example EVALSHA with KEYS and ARGV as array arguments
redis.evalsha(sha, ["k1", "k2"], ["a1", "a2"]) # => <depends on script>
@example EVALSHA with KEYS and ARGV in a hash argument
redis.evalsha(sha, :keys => ["k1", "k2"], :argv => ["a1", "a2"]) # => <depends on script>
@param [Array<String>] keys optional array with keys to pass to the script @param [Array<String>] argv optional array with arguments to pass to the script @param [Hash] options
- `:keys => Array<String>`: optional array with keys to pass to the script - `:argv => Array<String>`: optional array with arguments to pass to the script
@return depends on the script
Returns the bit value at offset in the string value stored at key.
@param [String] key @param [Fixnum] offset bit offset @return [Fixnum] `0` or `1`
Get a substring of the string stored at a key.
@param [String] key @param [Fixnum] start zero-based start offset @param [Fixnum] stop zero-based end offset. Use -1 for representing
the end of the string
@return [Fixnum] `0` or `1`
Set the string value of a key and return its old value.
@param [String] key @param [String] value value to replace the current value with @return [String] the old value stored in the key, or `nil` if the key
did not exist
Delete one or more hash fields.
@param [String] key @param [String, Array<String>] field @return [Fixnum] the number of fields that were removed from the hash
Increment the integer value of a hash field by the given integer number.
@param [String] key @param [String] field @param [Fixnum] increment @return [Fixnum] value of the field after incrementing it
Increment the numeric value of a hash field by the given float number.
@param [String] key @param [String] field @param [Float] increment @return [Float] value of the field after incrementing it
Get the number of fields in a hash.
@param [String] key @return [Fixnum] number of fields in the hash
Get the values of all the given hash fields.
@example
redis.hmget("hash", "f1", "f2") # => ["v1", "v2"]
@param [String] key @param [Array<String>] fields array of fields @return [Array<String>] an array of values for the specified fields
@see mapped_hmget
Set one or more hash values.
@example
redis.hmset("hash", "f1", "v1", "f2", "v2") # => "OK"
@param [String] key @param [Array<String>] attrs array of fields and values @return `"OK"`
@see mapped_hmset
Set the string value of a hash field.
@param [String] key @param [String] field @param [String] value @return [Boolean] whether or not the field was *added* to the hash
Set the value of a hash field, only if the field does not exist.
@param [String] key @param [String] field @param [String] value @return [Boolean] whether or not the field was *added* to the hash
Increment the integer value of a key by one.
@example
redis.incr("value") # => 6
@param [String] key @return [Fixnum] value after incrementing it
Increment the integer value of a key by the given integer number.
@example
redis.incrby("value", 5) # => 10
@param [String] key @param [Fixnum] increment @return [Fixnum] value after incrementing it
Increment the numeric value of a key by the given float number.
@example
redis.incrbyfloat("value", 1.23) # => 1.23
@param [String] key @param [Float] increment @return [Float] value after incrementing it
Get information and statistics about the server.
@param [String, Symbol] cmd e.g. "commandstats" @return [Hash<String, String>]
Find all keys matching the given pattern.
@param [String] pattern @return [Array<String>]
Insert an element before or after another element in a list.
@param [String] key @param [String, Symbol] where `BEFORE` or `AFTER` @param [String] pivot reference element @param [String] value @return [Fixnum] length of the list after the insert operation, or `-1`
when the element `pivot` was not found
Prepend one or more values to a list, creating the list if it doesn‘t exist
@param [String] key @param [String, Array] string value, or array of string values to push @return [Fixnum] the length of the list after the push operation
Prepend a value to a list, only if the list exists.
@param [String] key @param [String] value @return [Fixnum] the length of the list after the push operation
Get a range of elements from a list.
@param [String] key @param [Fixnum] start start index @param [Fixnum] stop stop index @return [Array<String>]
Remove elements from a list.
@param [String] key @param [Fixnum] count number of elements to remove. Use a positive
value to remove the first `count` occurrences of `value`. A negative value to remove the last `count` occurrences of `value`. Or zero, to remove all occurrences of `value` from the list.
@param [String] value @return [Fixnum] the number of removed elements
Set the value of an element in a list by its index.
@param [String] key @param [Fixnum] index @param [String] value @return [String] `OK`
Trim a list to the specified range.
@param [String] key @param [Fixnum] start start index @param [Fixnum] stop stop index @return [String] `OK`
Get the values of all the given hash fields.
@example
redis.hmget("hash", "f1", "f2") # => { "f1" => "v1", "f2" => "v2" }
@param [String] key @param [Array<String>] fields array of fields @return [Hash] a hash mapping the specified fields to their values
@see hmget
Set one or more hash values.
@example
redis.mapped_hmset("hash", { "f1" => "v1", "f2" => "v2" }) # => "OK"
@param [String] key @param [Hash] hash fields mapping to values @return `"OK"`
@see hmset
Get the values of all the given keys.
@example
redis.mget("key1", "key1") # => ["v1", "v2"]
@param [Array<String>] keys @return [Array<String>] an array of values for the specified keys
@see mapped_mget
Listen for all requests received by the server in real time.
There is no way to interrupt this command.
@yield a block to be called for every line of output @yieldparam [String] line timestamp and command that was executed
Move a key to another database.
@example Move a key to another database
redis.set "foo", "bar" # => "OK" redis.move "foo", 2 # => true redis.exists "foo" # => false redis.select 2 # => "OK" redis.exists "foo" # => true resis.get "foo" # => "bar"
@param [String] key @param [Fixnum] db @return [Boolean] whether the key was moved or not
Set one or more values.
@example
redis.mset("key1", "v1", "key2", "v2") # => "OK"
@param [Array<String>] args array of keys and values @return `"OK"`
@see mapped_mset
Set one or more values, only if none of the keys exist.
@example
redis.msetnx("key1", "v1", "key2", "v2") # => true
@param [Array<String>] args array of keys and values @return [Boolean] whether or not all values were set
@see mapped_msetnx
Mark the start of a transaction block.
Passing a block is optional.
@example With a block
redis.multi do |multi| multi.set("key", "value") multi.incr("counter") end # => ["OK", 6]
@example Without a block
redis.multi # => "OK" redis.set("key", "value") # => "QUEUED" redis.incr("counter") # => "QUEUED" redis.exec # => ["OK", 6]
@yield [multi] the commands that are called inside this block are cached
and written to the server upon returning from it
@yieldparam [Redis] multi `self`
@return [String, Array<…>]
- when a block is not given, `OK` - when a block is given, an array with replies
Remove the expiration from a key.
@param [String] key @return [Boolean] whether the timeout was removed or not
Rename a key, only if the new key does not exist.
@param [String] old_name @param [String] new_name @return [Boolean] whether the key was renamed or not
Create a key using the serialized value, previously obtained using DUMP.
@param [String] key @param [String] ttl @param [String] serialized_value @return `"OK"`
Remove the last element in a list, append it to another list and return it.
@param [String] source source key @param [String] destination destination key @return [nil, String] the element, or nil when the source key does not exist
Append one or more values to a list, creating the list if it doesn‘t exist
@param [String] key @param [String] value @return [Fixnum] the length of the list after the push operation
Append a value to a list, only if the list exists.
@param [String] key @param [String] value @return [Fixnum] the length of the list after the push operation
Add one or more members to a set.
@param [String] key @param [String, Array<String>] member one member, or array of members @return [Boolean, Fixnum] `Boolean` when a single member is specified,
holding whether or not adding the member succeeded, or `Fixnum` when an array of members is specified, holding the number of members that were successfully added
Control remote script registry.
@example Load a script
sha = redis.script(:load, "return 1") # => <sha of this script>
@example Check if a script exists
redis.script(:exists, sha) # => true
@example Check if multiple scripts exist
redis.script(:exists, [sha, other_sha]) # => [true, false]
@example Flush the script registry
redis.script(:flush) # => "OK"
@example Kill a running script
redis.script(:kill) # => "OK"
@param [String] subcommand e.g. `exists`, `flush`, `load`, `kill` @param [Array<String>] args depends on subcommand @return [String, Boolean, Array<Boolean>, …] depends on subcommand
Change the selected database for the current connection.
@param [Fixnum] db zero-based index of the DB to use (0 to 15) @return [String] `OK`
Sets or clears the bit at offset in the string value stored at key.
@param [String] key @param [Fixnum] offset bit offset @param [Fixnum] value bit value `0` or `1` @return [Fixnum] the original bit value stored at `offset`
Set the value of a key, only if the key does not exist.
@param [String] key @param [String] value @return [Boolean] whether the key was set or not
Overwrite part of a string at key starting at the specified offset.
@param [String] key @param [Fixnum] offset byte offset @param [String] value @return [Fixnum] length of the string after it was modified
Determine if a given value is a member of a set.
@param [String] key @param [String] member @return [Boolean]
Sort the elements in a list, set or sorted set.
@example Retrieve the first 2 elements from an alphabetically sorted "list"
redis.sort("list", :order => "alpha", :limit => [0, 2]) # => ["a", "b"]
@example Store an alphabetically descending list in "target"
redis.sort("list", :order => "desc alpha", :store => "target") # => 26
@param [String] key @param [Hash] options
- `:by => String`: use external key to sort elements by - `:limit => [offset, count]`: skip `offset` elements, return a maximum of `count` elements - `:get => [String, Array<String>]`: single key or array of keys to retrieve per element in the result - `:order => String`: combination of `ASC`, `DESC` and optionally `ALPHA` - `:store => String`: key to store the result at
@return [Array<String>, Array<Array<String>>, Fixnum]
- when `:get` is not specified, or holds a single element, an array of elements - when `:get` is specified, and holds more than one element, an array of elements where every element is an array with the result for every element specified in `:get` - when `:store` is specified, the number of elements in the stored result
Get one or more random members from a set.
@param [String] key @param [Fixnum] count @return [String]
Remove one or more members from a set.
@param [String] key @param [String, Array<String>] member one member, or array of members @return [Boolean, Fixnum] `Boolean` when a single member is specified,
holding whether or not removing the member succeeded, or `Fixnum` when an array of members is specified, holding the number of members that were successfully removed
Get the length of the value stored in a key.
@param [String] key @return [Fixnum] the length of the value stored in the key, or 0
if the key does not exist
Return the server time.
@example
r.time # => [ 1333093196, 606806 ]
@return [Array<Fixnum>] tuple of seconds since UNIX epoch and
microseconds in the current second
Watch the given keys to determine execution of the MULTI/EXEC block.
Using a block is optional, but is necessary for thread-safety.
An `unwatch` is automatically issued if an exception is raised within the block that is a subclass of StandardError and is not a ConnectionError.
@example With a block
redis.watch("key") do if redis.get("key") == "some value" redis.multi do |multi| multi.set("key", "other value") multi.incr("counter") end else redis.unwatch end end # => ["OK", 6]
@example Without a block
redis.watch("key") # => "OK"
@param [String, Array<String>] keys one or more keys to watch @return [Object] if using a block, returns the return value of the block @return [String] if not using a block, returns `OK`
Add one or more members to a sorted set, or update the score for members that already exist.
@example Add a single `[score, member]` pair to a sorted set
redis.zadd("zset", 32.0, "member")
@example Add an array of `[score, member]` pairs to a sorted set
redis.zadd("zset", [[32.0, "a"], [64.0, "b"]])
@param [String] key @param [[Float, String], Array<[Float, String]>] args
- a single `[score, member]` pair - an array of `[score, member]` pairs
@return [Boolean, Fixnum]
- `Boolean` when a single pair is specified, holding whether or not it was **added** to the sorted set - `Fixnum` when an array of pairs is specified, holding the number of pairs that were **added** to the sorted set
Get the number of members in a sorted set.
@example
redis.zcard("zset") # => 4
@param [String] key @return [Fixnum]
Count the members in a sorted set with scores within the given values.
@example Count members with score `>= 5` and `< 100`
redis.zcount("zset", "5", "(100") # => 2
@example Count members with scores `> 5`
redis.zcount("zset", "(5", "+inf") # => 2
@param [String] key @param [String] min
- inclusive minimum score is specified verbatim - exclusive minimum score is specified by prefixing `(`
@param [String] max
- inclusive maximum score is specified verbatim - exclusive maximum score is specified by prefixing `(`
@return [Fixnum] number of members in within the specified range
Increment the score of a member in a sorted set.
@example
redis.zincrby("zset", 32.0, "a") # => 64.0
@param [String] key @param [Float] increment @param [String] member @return [Float] score of the member after incrementing it
Intersect multiple sorted sets and store the resulting sorted set in a new key.
@example Compute the intersection of `2*zsetA` with `1*zsetB`, summing their scores
redis.zinterstore("zsetC", ["zsetA", "zsetB"], :weights => [2.0, 1.0], :aggregate => "sum") # => 4
@param [String] destination destination key @param [Array<String>] keys source keys @param [Hash] options
- `:weights => [Float, Float, ...]`: weights to associate with source sorted sets - `:aggregate => String`: aggregate function to use (sum, min, max, ...)
@return [Fixnum] number of elements in the resulting sorted set
Return a range of members in a sorted set, by index.
@example Retrieve all members from a sorted set
redis.zrange("zset", 0, -1) # => ["a", "b"]
@example Retrieve all members and their scores from a sorted set
redis.zrange("zset", 0, -1, :with_scores => true) # => [["a", 32.0], ["b", 64.0]]
@param [String] key @param [Fixnum] start start index @param [Fixnum] stop stop index @param [Hash] options
- `:with_scores => true`: include scores in output
@return [Array<String>, Array<[String, Float]>]
- when `:with_scores` is not specified, an array of members - when `:with_scores` is specified, an array with `[member, score]` pairs
Return a range of members in a sorted set, by score.
@example Retrieve members with score `>= 5` and `< 100`
redis.zrangebyscore("zset", "5", "(100") # => ["a", "b"]
@example Retrieve the first 2 members with score `>= 0`
redis.zrangebyscore("zset", "0", "+inf", :limit => [0, 2]) # => ["a", "b"]
@example Retrieve members and their scores with scores `> 5`
redis.zrangebyscore("zset", "(5", "+inf", :with_scores => true) # => [["a", 32.0], ["b", 64.0]]
@param [String] key @param [String] min
- inclusive minimum score is specified verbatim - exclusive minimum score is specified by prefixing `(`
@param [String] max
- inclusive maximum score is specified verbatim - exclusive maximum score is specified by prefixing `(`
@param [Hash] options
- `:with_scores => true`: include scores in output - `:limit => [offset, count]`: skip `offset` members, return a maximum of `count` members
@return [Array<String>, Array<[String, Float]>]
- when `:with_scores` is not specified, an array of members - when `:with_scores` is specified, an array with `[member, score]` pairs
Determine the index of a member in a sorted set.
@param [String] key @param [String] member @return [Fixnum]
Remove one or more members from a sorted set.
@example Remove a single member from a sorted set
redis.zrem("zset", "a")
@example Remove an array of members from a sorted set
redis.zrem("zset", ["a", "b"])
@param [String] key @param [String, Array<String>] member
- a single member - an array of members
@return [Boolean, Fixnum]
- `Boolean` when a single member is specified, holding whether or not it was removed from the sorted set - `Fixnum` when an array of pairs is specified, holding the number of members that were removed to the sorted set
Remove all members in a sorted set within the given indexes.
@example Remove first 5 members
redis.zremrangebyrank("zset", 0, 4) # => 5
@example Remove last 5 members
redis.zremrangebyrank("zset", -5, -1) # => 5
@param [String] key @param [Fixnum] start start index @param [Fixnum] stop stop index @return [Fixnum] number of members that were removed
Remove all members in a sorted set within the given scores.
@example Remove members with score `>= 5` and `< 100`
redis.zremrangebyscore("zset", "5", "(100") # => 2
@example Remove members with scores `> 5`
redis.zremrangebyscore("zset", "(5", "+inf") # => 2
@param [String] key @param [String] min
- inclusive minimum score is specified verbatim - exclusive minimum score is specified by prefixing `(`
@param [String] max
- inclusive maximum score is specified verbatim - exclusive maximum score is specified by prefixing `(`
@return [Fixnum] number of members that were removed
Return a range of members in a sorted set, by index, with scores ordered from high to low.
@example Retrieve all members from a sorted set
redis.zrevrange("zset", 0, -1) # => ["b", "a"]
@example Retrieve all members and their scores from a sorted set
redis.zrevrange("zset", 0, -1, :with_scores => true) # => [["b", 64.0], ["a", 32.0]]
@see zrange
Return a range of members in a sorted set, by score, with scores ordered from high to low.
@example Retrieve members with score `< 100` and `>= 5`
redis.zrevrangebyscore("zset", "(100", "5") # => ["b", "a"]
@example Retrieve the first 2 members with score `<= 0`
redis.zrevrangebyscore("zset", "0", "-inf", :limit => [0, 2]) # => ["b", "a"]
@example Retrieve members and their scores with scores `> 5`
redis.zrevrangebyscore("zset", "+inf", "(5", :with_scores => true) # => [["b", 64.0], ["a", 32.0]]
@see zrangebyscore
Determine the index of a member in a sorted set, with scores ordered from high to low.
@param [String] key @param [String] member @return [Fixnum]
Get the score associated with the given member in a sorted set.
@example Get the score for member "a"
redis.zscore("zset", "a") # => 32.0
@param [String] key @param [String] member @return [Float] score of the member
Add multiple sorted sets and store the resulting sorted set in a new key.
@example Compute the union of `2*zsetA` with `1*zsetB`, summing their scores
redis.zunionstore("zsetC", ["zsetA", "zsetB"], :weights => [2.0, 1.0], :aggregate => "sum") # => 8
@param [String] destination destination key @param [Array<String>] keys source keys @param [Hash] options
- `:weights => [Float, Float, ...]`: weights to associate with source sorted sets - `:aggregate => String`: aggregate function to use (sum, min, max, ...)
@return [Fixnum] number of elements in the resulting sorted set