diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..41783f2
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,5 @@
+/.github export-ignore
+/docs export-ignore
+.gitattributes export-ignore
+.gitignore export-ignore
+.gitmodules export-ignore
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 9254656..f858a89 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
/.github
/.idea
/.vscode
+/docs/.cache
.cquery
*.deps
*.libs
@@ -19,4 +20,5 @@ autom4te.cache
mkinstalldirs
tags
compile_commands.json
-run-tests.php
+doctum.phar
+run-tests.php
\ No newline at end of file
diff --git a/docs/DOCTUM_VERSION b/docs/DOCTUM_VERSION
new file mode 100644
index 0000000..d41f08f
--- /dev/null
+++ b/docs/DOCTUM_VERSION
@@ -0,0 +1 @@
+5.5.1
\ No newline at end of file
diff --git a/docs/PROJECT_VERSION b/docs/PROJECT_VERSION
new file mode 100644
index 0000000..ce57f64
--- /dev/null
+++ b/docs/PROJECT_VERSION
@@ -0,0 +1 @@
+develop
\ No newline at end of file
diff --git a/docs/Redis.html b/docs/Redis.html
new file mode 100644
index 0000000..cfc5a25
--- /dev/null
+++ b/docs/Redis.html
@@ -0,0 +1,19133 @@
+
+
+
+
+
+ Redis | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
class
+ Redis (View source )
+
+
+
+
+
+
+
+
+
+
+
Methods
+
+
+
+
+
+
+
+
__construct (array $options = null)
+
+
Create a new Redis instance. If passed sufficient information in the
+options array it is also possible to connect to an instance at the same
+time.
+
+
+
+
+
+ string
+
+
+
_compress (string $value)
+
+
Compress a value with the currently configured compressor as set with
+Redis::setOption().
+
+
+
+
+ string
+
+
+
_uncompress (string $value)
+
+
Uncompress the provided argument that has been compressed with the
+currently configured compressor as set with Redis::setOption().
+
+
+
+
+ string
+
+
+
_prefix (string $key)
+
+
Prefix the passed argument with the currently set key prefix as set
+with Redis::setOption().
+
+
+
+
+ string
+
+
+
_serialize (mixed $value)
+
+
Serialize the provided value with the currently set serializer as set
+with Redis::setOption().
+
+
+
+
+ mixed
+
+
+
_unserialize (string $value)
+
+
Unserialize the passed argument with the currently set serializer as set
+with Redis::setOption().
+
+
+
+
+ string
+
+
+
_pack (mixed $value)
+
+
Pack the provided value with the configured serializer and compressor
+as set with Redis::setOption().
+
+
+
+
+ mixed
+
+
+
_unpack (string $value)
+
+
Unpack the provided value with the configured compressor and serializer
+as set with Redis::setOption().
+
+
+
+
+ mixed
+
+
+
acl (string $subcmd, string ...$args)
+
+
No description
+
+
+
+
+
+ Redis|int|false
+
+
+
append (string $key, mixed $value)
+
+
Append data to a Redis STRING key.
+
+
+
+
+ Redis|bool
+
+
+
auth (mixed $credentials)
+
+
Authenticate a Redis connection after its been established.
+
+
+
+
+ Redis|bool
+
+
+
bgSave ()
+
+
Execute a save of the Redis database in the background.
+
+
+
+
+ Redis|bool
+
+
+
bgrewriteaof ()
+
+
Asynchronously rewrite Redis' append-only file
+
+
+
+
+ Redis|int|false
+
+
+
bitcount (string $key, int $start = 0, int $end = -1, bool $bybit = false)
+
+
Count the number of set bits in a Redis string.
+
+
+
+
+ Redis|int|false
+
+
+
bitop (string $operation, string $deskey, string $srckey, string ...$other_keys)
+
+
No description
+
+
+
+
+
+ Redis|int|false
+
+
+
bitpos (string $key, bool $bit, int $start = 0, int $end = -1, bool $bybit = false)
+
+
Return the position of the first bit set to 0 or 1 in a string.
+
+
+
+
+ Redis|array|null|false
+
+
+
blPop (string|array $key_or_keys, string|float|int $timeout_or_key, mixed ...$extra_args)
+
+
Pop an element off the beginning of a Redis list or lists, potentially blocking up to a specified
+timeout. This method may be called in two distinct ways, of which examples are provided below.
+
+
+
+
+ Redis|array|null|false
+
+
+
brPop (string|array $key_or_keys, string|float|int $timeout_or_key, mixed ...$extra_args)
+
+
Pop an element off of the end of a Redis list or lists, potentially blocking up to a specified timeout.
+
+
+
+
+ Redis|string|false
+
+
+
brpoplpush (string $src, string $dst, int|float $timeout)
+
+
Pop an element from the end of a Redis list, pushing it to the beginning of another Redis list,
+optionally blocking up to a specified timeout.
+
+
+
+
+ Redis|array|false
+
+
+
bzPopMax (string|array $key, string|int $timeout_or_key, mixed ...$extra_args)
+
+
POP the maximum scoring element off of one or more sorted sets, blocking up to a specified
+timeout if no elements are available.
+
+
+
+
+ Redis|array|false
+
+
+
bzPopMin (string|array $key, string|int $timeout_or_key, mixed ...$extra_args)
+
+
POP the minimum scoring element off of one or more sorted sets, blocking up to a specified timeout
+if no elements are available
+
+
+
+
+ Redis|array|null|false
+
+
+
bzmpop (float $timeout, array $keys, string $from, int $count = 1)
+
+
POP one or more elements from one or more sorted sets, blocking up to a specified amount of time
+when no elements are available.
+
+
+
+
+ Redis|array|null|false
+
+
+
zmpop (array $keys, string $from, int $count = 1)
+
+
POP one or more of the highest or lowest scoring elements from one or more sorted sets.
+
+
+
+
+ Redis|array|null|false
+
+
+
blmpop (float $timeout, array $keys, string $from, int $count = 1)
+
+
Pop one or more elements from one or more Redis LISTs, blocking up to a specified timeout when
+no elements are available.
+
+
+
+
+ Redis|array|null|false
+
+
+
lmpop (array $keys, string $from, int $count = 1)
+
+
Pop one or more elements off of one or more Redis LISTs.
+
+
+
+
+
+ mixed
+
+
+
client (string $opt, mixed ...$args)
+
+
No description
+
+
+
+
+
+ bool
+
+
+
close ()
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
command (string $opt = null, string|array $arg)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
config (string $operation, array|string|null $key_or_settings = NULL, string|null $value = NULL)
+
+
Execute the Redis CONFIG command in a variety of ways. What the command does in particular depends
+on the $operation qualifier.
+
+
+
+
+ bool
+
+
+
connect (string $host, int $port = 6379, float $timeout = 0, string $persistent_id = null, int $retry_interval = 0, float $read_timeout = 0, array $context = null)
+
+
No description
+
+
+
+
+
+ Redis|bool
+
+
+
copy (string $src, string $dst, array $options = null)
+
+
Make a copy of a redis key.
+
+
+
+
+ Redis|int|false
+
+
+
dbSize ()
+
+
Return the number of keys in the currently selected Redis database.
+
+
+
+
+ Redis|string
+
+
+
debug (string $key)
+
+
No description
+
+
+
+
+
+ Redis|int|false
+
+
+
decr (string $key, int $by = 1)
+
+
Decrement a Redis integer by 1 or a provided value.
+
+
+
+
+ Redis|int|false
+
+
+
decrBy (string $key, int $value)
+
+
Decrement a redis integer by a value
+
+
+
+
+ Redis|int|false
+
+
+
del (array|string $key, string ...$other_keys)
+
+
Delete one or more keys from Redis.
+
+
+
+
+ Redis|int|false
+
+
+
delete (array|string $key, string ...$other_keys)
+
deprecated
+
No description
+
+
+
+
+
+ Redis|bool
+
+
+
discard ()
+
+
Discard a transaction currently in progress.
+
+
+
+
+ Redis|string
+
+
+
dump (string $key)
+
+
Dump Redis' internal binary representation of a key.
+
+
+
+
+ Redis|string|false
+
+
+
echo (string $str)
+
+
Have Redis repeat back an arbitrary string to the client.
+
+
+
+
+ mixed
+
+
+
eval (string $script, array $args = [], int $num_keys = 0)
+
+
Execute a LUA script on the redis server.
+
+
+
+
+ mixed
+
+
+
eval_ro (string $script_sha, array $args = [], int $num_keys = 0)
+
+
This is simply the read-only variant of eval, meaning the underlying script
+may not modify data in redis.
+
+
+
+
+ mixed
+
+
+
evalsha (string $sha1, array $args = [], int $num_keys = 0)
+
+
Execute a LUA script on the server but instead of sending the script, send
+the SHA1 hash of the script.
+
+
+
+
+ mixed
+
+
+
evalsha_ro (string $sha1, array $args = [], int $num_keys = 0)
+
+
This is simply the read-only variant of evalsha, meaning the underlying script
+may not modify data in redis.
+
+
+
+
+ Redis|array|false
+
+
+
exec ()
+
+
Execute either a MULTI or PIPELINE block and return the array of replies.
+
+
+
+
+ Redis|int|bool
+
+
+
exists (mixed $key, mixed ...$other_keys)
+
+
Test if one or more keys exist.
+
+
+
+
+ Redis|bool
+
+
+
expire (string $key, int $timeout, string|null $mode = NULL)
+
+
Sets an expiration in seconds on the key in question. If connected to
+redis-server >= 7.0.0 you may send an additional "mode" argument which
+modifies how the command will execute.
+
+
+
+
+ Redis|bool
+
+
+
expireAt (string $key, int $timestamp, string|null $mode = NULL)
+
+
Set a key's expiration to a specific Unix timestamp in seconds. If
+connected to Redis >= 7.0.0 you can pass an optional 'mode' argument.
+
+
+
+
+ Redis|bool
+
+
+
failover (array|null $to = null, bool $abort = false, int $timeout = 0)
+
+
No description
+
+
+
+
+
+ Redis|int|false
+
+
+
expiretime (string $key)
+
+
Get the expiration of a given key as a unix timestamp
+
+
+
+
+ Redis|int|false
+
+
+
pexpiretime (string $key)
+
+
Get the expriation timestamp of a given Redis key but in milliseconds.
+
+
+
+
+ Redis|bool
+
+
+
flushAll (bool|null $sync = null)
+
+
Deletes every key in all Redis databases
+
+
+
+
+ Redis|bool
+
+
+
flushDB (bool|null $sync = null)
+
+
Deletes all the keys of the currently selected database.
+
+
+
+
+ Redis|int|false
+
+
+
geoadd (string $key, float $lng, float $lat, string $member, mixed ...$other_triples_and_options)
+
+
No description
+
+
+
+
+
+ Redis|float|false
+
+
+
geodist (string $key, string $src, string $dst, string|null $unit = null)
+
+
No description
+
+
+
+
+
+ Redis|array|false
+
+
+
geohash (string $key, string $member, string ...$other_members)
+
+
No description
+
+
+
+
+
+ Redis|array|false
+
+
+
geopos (string $key, string $member, string ...$other_members)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
georadius (string $key, float $lng, float $lat, float $radius, string $unit, array $options = [])
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
georadius_ro (string $key, float $lng, float $lat, float $radius, string $unit, array $options = [])
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
georadiusbymember (string $key, string $member, float $radius, string $unit, array $options = [])
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
georadiusbymember_ro (string $key, string $member, float $radius, string $unit, array $options = [])
+
+
No description
+
+
+
+
+
+ array
+
+
+
geosearch (string $key, array|string $position, array|int|float $shape, string $unit, array $options = [])
+
+
No description
+
+
+
+
+
+ Redis|array|int|false
+
+
+
geosearchstore (string $dst, string $src, array|string $position, array|int|float $shape, string $unit, array $options = [])
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
get (string $key)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
getAuth ()
+
+
Get the authentication information on the connection, if any.
+
+
+
+
+ Redis|int|false
+
+
+
getBit (string $key, int $idx)
+
+
No description
+
+
+
+
+
+ Redis|string|bool
+
+
+
getEx (string $key, array $options = [])
+
+
No description
+
+
+
+
+
+
+ Redis|string|bool
+
+
+
getDel (string $key)
+
+
No description
+
+
+
+
+
+ string
+
+
+
getHost ()
+
+
Return the host or Unix socket we are connected to.
+
+
+
+
+ string|null
+
+
+
getLastError ()
+
+
Get the last error returned to us from Redis, if any.
+
+
+
+
+ int
+
+
+
getMode ()
+
+
Returns whether the connection is in ATOMIC, MULTI, or PIPELINE mode
+
+
+
+
+ mixed
+
+
+
getOption (int $option)
+
+
Retrieve the value of a configuration setting as set by Redis::setOption()
+
+
+
+
+
+ int
+
+
+
getPort ()
+
+
Get the port we are connected to. This number will be zero if we are connected to a unix socket.
+
+
+
+
+ Redis|string|false
+
+
+
getRange (string $key, int $start, int $end)
+
+
Retrieve a substring of a string by index.
+
+
+
+
+ Redis|string|array|int|false
+
+
+
lcs (string $key1, string $key2, array|null $options = NULL)
+
+
Get the longest common subsequence between two string keys.
+
+
+
+
+ float
+
+
+
getReadTimeout ()
+
+
Get the currently set read timeout on the connection.
+
+
+
+
+ Redis|string|false
+
+
+
getset (string $key, mixed $value)
+
+
Sets a key and returns any previously set value, if the key already existed.
+
+
+
+
+ float|false
+
+
+
getTimeout ()
+
+
Retrieve any set connection timeout
+
+
+
+
+
+ Redis|int|false
+
+
+
hDel (string $key, string $field, string ...$other_fields)
+
+
Remove one or more fields from a hash.
+
+
+
+
+ Redis|bool
+
+
+
hExists (string $key, string $field)
+
+
Checks whether a field exists in a hash.
+
+
+
+
+ mixed
+
+
+
hGet (string $key, string $member)
+
+
No description
+
+
+
+
+
+ Redis|array|false
+
+
+
hGetAll (string $key)
+
+
Read every field and value from a hash.
+
+
+
+
+ Redis|int|false
+
+
+
hIncrBy (string $key, string $field, int $value)
+
+
Increment a hash field's value by an integer
+
+
+
+
+ Redis|float|false
+
+
+
hIncrByFloat (string $key, string $field, float $value)
+
+
Increment a hash field by a floating point value
+
+
+
+
+ Redis|array|false
+
+
+
hKeys (string $key)
+
+
Retrieve all of the fields of a hash.
+
+
+
+
+ Redis|int|false
+
+
+
hLen (string $key)
+
+
Get the number of fields in a hash.
+
+
+
+
+ Redis|array|false
+
+
+
hMget (string $key, array $fields)
+
+
Get one or more fields from a hash.
+
+
+
+
+ Redis|bool
+
+
+
hMset (string $key, array $fieldvals)
+
+
Add or update one or more hash fields and values
+
+
+
+
+ Redis|string|array
+
+
+
hRandField (string $key, array $options = null)
+
+
Get one or more random field from a hash.
+
+
+
+
+ Redis|int|false
+
+
+
hSet (string $key, string $member, mixed $value)
+
+
No description
+
+
+
+
+
+ Redis|bool
+
+
+
hSetNx (string $key, string $field, string $value)
+
+
Set a hash field and value, but only if that field does not exist
+
+
+
+
+ Redis|int|false
+
+
+
hStrLen (string $key, string $field)
+
+
Get the string length of a hash field
+
+
+
+
+ Redis|array|false
+
+
+
hVals (string $key)
+
+
Get all of the values from a hash.
+
+
+
+
+ Redis|array|bool
+
+
+
hscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
Iterate over the fields and values of a hash in an incremental fashion.
+
+
+
+
+ Redis|int|false
+
+
+
incr (string $key, int $by = 1)
+
+
Increment a key's value, optionally by a specifc amount.
+
+
+
+
+ Redis|int|false
+
+
+
incrBy (string $key, int $value)
+
+
Increment a key by a specific integer value
+
+
+
+
+ Redis|float|false
+
+
+
incrByFloat (string $key, float $value)
+
+
Increment a numeric key by a floating point value.
+
+
+
+
+ Redis|array|false
+
+
+
info (string ...$sections)
+
+
Retrieve information about the connected redis-server. If no arguments are passed to
+this function, redis will return every info field. Alternatively you may pass a specific
+section you want returned (e.g. 'server', or 'memory') to receive only information pertaining
+to that section.
+
+
+
+
+ bool
+
+
+
isConnected ()
+
+
Check if we are currently connected to a Redis instance.
+
+
+
+
+
+
keys (string $pattern)
+
+
No description
+
+
+
+
+
+
+
lInsert (string $key, string $pos, mixed $pivot, mixed $value)
+
+
No description
+
+
+
+
+
+ Redis|int|false
+
+
+
lLen (string $key)
+
+
No description
+
+
+
+
+
+ Redis|string|false
+
+
+
lMove (string $src, string $dst, string $wherefrom, string $whereto)
+
+
No description
+
+
+
+
+
+ Redis|bool|string|array
+
+
+
lPop (string $key, int $count = 0)
+
+
No description
+
+
+
+
+
+ Redis|null|bool|int|array
+
+
+
lPos (string $key, mixed $value, array $options = null)
+
+
No description
+
+
+
+
+
+
+
lPush (string $key, mixed ...$elements)
+
+
No description
+
+
+
+
+
+
+
rPush (string $key, mixed ...$elements)
+
+
No description
+
+
+
+
+
+
+
lPushx (string $key, mixed $value)
+
+
No description
+
+
+
+
+
+
+
rPushx (string $key, mixed $value)
+
+
No description
+
+
+
+
+
+ Redis|bool
+
+
+
lSet (string $key, int $index, mixed $value)
+
+
No description
+
+
+
+
+
+
+ mixed
+
+
+
lindex (string $key, int $index)
+
+
No description
+
+
+
+
+
+ Redis|array|false
+
+
+
lrange (string $key, int $start, int $end)
+
+
No description
+
+
+
+
+
+
+
lrem (string $key, mixed $value, int $count = 0)
+
+
No description
+
+
+
+
+
+ Redis|bool
+
+
+
ltrim (string $key, int $start, int $end)
+
+
No description
+
+
+
+
+
+
+
mget (array $keys)
+
+
No description
+
+
+
+
+
+ Redis|bool
+
+
+
migrate (string $host, int $port, string|array $key, int $dstdb, int $timeout, bool $copy = false, bool $replace = false, mixed $credentials = NULL)
+
+
No description
+
+
+
+
+
+ bool
+
+
+
move (string $key, int $index)
+
+
No description
+
+
+
+
+
+ Redis|bool
+
+
+
mset (array $key_values)
+
+
No description
+
+
+
+
+
+ Redis|bool
+
+
+
msetnx (array $key_values)
+
+
No description
+
+
+
+
+
+ bool|Redis
+
+
+
multi (int $value = Redis::MULTI)
+
+
No description
+
+
+
+
+
+ Redis|int|string|false
+
+
+
object (string $subcommand, string $key)
+
+
No description
+
+
+
+
+
+ bool
+
+
+
open (string $host, int $port = 6379, float $timeout = 0, string $persistent_id = NULL, int $retry_interval = 0, float $read_timeout = 0, array $context = NULL)
+
deprecated
+
No description
+
+
+
+
+
+ bool
+
+
+
pconnect (string $host, int $port = 6379, float $timeout = 0, string $persistent_id = NULL, int $retry_interval = 0, float $read_timeout = 0, array $context = NULL)
+
+
No description
+
+
+
+
+
+ bool
+
+
+
persist (string $key)
+
+
No description
+
+
+
+
+
+ bool
+
+
+
pexpire (string $key, int $timeout, string|null $mode = NULL)
+
+
Sets an expiration in milliseconds on a given key. If connected to Redis >= 7.0.0
+you can pass an optional mode argument that modifies how the command will execute.
+
+
+
+
+ Redis|bool
+
+
+
pexpireAt (string $key, int $timestamp, string|null $mode = NULL)
+
+
Set a key's expiration to a specific Unix Timestamp in milliseconds. If connected to
+Redis >= 7.0.0 you can pass an optional 'mode' argument.
+
+
+
+
+ Redis|int
+
+
+
pfadd (string $key, array $elements)
+
+
Add one or more elements to a Redis HyperLogLog key
+
+
+
+
+ Redis|int
+
+
+
pfcount (string $key)
+
+
Retrieve the cardinality of a Redis HyperLogLog key.
+
+
+
+
+ Redis|bool
+
+
+
pfmerge (string $dst, array $srckeys)
+
+
Merge one or more source HyperLogLog sets into a destination set.
+
+
+
+
+ Redis|string|bool
+
+
+
ping (string $message = NULL)
+
+
PING the redis server with an optional string argument.
+
+
+
+
+ bool|Redis
+
+
+
pipeline ()
+
+
Enter into pipeline mode.
+
+
+
+
+ bool
+
+
+
popen (string $host, int $port = 6379, float $timeout = 0, string $persistent_id = NULL, int $retry_interval = 0, float $read_timeout = 0, array $context = NULL)
+
deprecated
+
No description
+
+
+
+
+
+
+
psetex (string $key, int $expire, mixed $value)
+
+
No description
+
+
+
+
+
+ bool
+
+
+
psubscribe (array $patterns, callable $cb)
+
+
Subscribe to one or more glob-style patterns
+
+
+
+
+ Redis|int|false
+
+
+
pttl (string $key)
+
+
Get a keys time to live in milliseconds.
+
+
+
+
+ Redis|int|false
+
+
+
publish (string $channel, string $message)
+
+
Publish a message to a pubsub channel
+
+
+
+
+ mixed
+
+
+
pubsub (string $command, mixed $arg = null)
+
+
No description
+
+
+
+
+
+ Redis|array|bool
+
+
+
punsubscribe (array $patterns)
+
+
Unsubscribe from one or more channels by pattern
+
+
+
+
+ Redis|array|string|bool
+
+
+
rPop (string $key, int $count = 0)
+
+
Pop one or more elements from the end of a list.
+
+
+
+
+ Redis|string|false
+
+
+
randomKey ()
+
+
Return a random key from the current database
+
+
+
+
+ mixed
+
+
+
rawcommand (string $command, mixed ...$args)
+
+
Execute any arbitrary Redis command by name.
+
+
+
+
+ Redis|bool
+
+
+
rename (string $old_name, string $new_name)
+
+
Unconditionally rename a key from $old_name to $new_name
+
+
+
+
+ Redis|bool
+
+
+
renameNx (string $key_src, string $key_dst)
+
+
Renames $key_src to $key_dst but only if newkey does not exist.
+
+
+
+
+ Redis|bool
+
+
+
reset ()
+
+
Reset the state of the connection.
+
+
+
+
+ Redis|bool
+
+
+
restore (string $key, int $ttl, string $value, array|null $options = NULL)
+
+
Restore a key by the binary payload generated by the DUMP command.
+
+
+
+
+ mixed
+
+
+
role ()
+
+
Query whether the connected instance is a primary or replica
+
+
+
+
+ Redis|string|false
+
+
+
rpoplpush (string $srckey, string $dstkey)
+
+
Atomically pop an element off the end of a Redis LIST and push it to the beginning of
+another.
+
+
+
+
+ Redis|int|false
+
+
+
sAdd (string $key, mixed $value, mixed ...$other_values)
+
+
Add one or more values to a Redis SET key.
+
+
+
+
+ int
+
+
+
sAddArray (string $key, array $values)
+
+
Add one ore more values to a Redis SET key. This is an alternative to Redis::sadd() but
+instead of being variadic, takes a single array of values.
+
+
+
+
+ Redis|array|false
+
+
+
sDiff (string $key, string ...$other_keys)
+
+
Given one or more Redis SETS, this command returns all of the members from the first
+set that are not in any subsequent set.
+
+
+
+
+ Redis|int|false
+
+
+
sDiffStore (string $dst, string $key, string ...$other_keys)
+
+
This method performs the same operation as SDIFF except it stores the resulting diff
+values in a specified destination key.
+
+
+
+
+ Redis|array|false
+
+
+
sInter (array|string $key, string ...$other_keys)
+
+
Given one or more Redis SET keys, this command will return all of the elements that are
+in every one.
+
+
+
+
+ Redis|int|false
+
+
+
sintercard (array $keys, int $limit = -1)
+
+
Compute the intersection of one or more sets and return the cardinality of the result.
+
+
+
+
+ Redis|int|false
+
+
+
sInterStore (array|string $key, string ...$other_keys)
+
+
Perform the intersection of one or more Redis SETs, storing the result in a destination
+key, rather than returning them.
+
+
+
+
+ Redis|array|false
+
+
+
sMembers (string $key)
+
+
Retrieve every member from a set key.
+
+
+
+
+ Redis|array|false
+
+
+
sMisMember (string $key, string $member, string ...$other_members)
+
+
Check if one or more values are members of a set.
+
+
+
+
+ Redis|bool
+
+
+
sMove (string $src, string $dst, mixed $value)
+
+
Pop a member from one set and push it onto another. This command will create the
+destination set if it does not currently exist.
+
+
+
+
+ Redis|string|array|false
+
+
+
sPop (string $key, int $count = 0)
+
+
Remove one or more elements from a set.
+
+
+
+
+ Redis|string|array|false
+
+
+
sRandMember (string $key, int $count = 0)
+
+
Retrieve one or more random members of a set.
+
+
+
+
+ Redis|array|false
+
+
+
sUnion (string $key, string ...$other_keys)
+
+
Returns the union of one or more Redis SET keys.
+
+
+
+
+ Redis|int|false
+
+
+
sUnionStore (string $dst, string $key, string ...$other_keys)
+
+
Perform a union of one or more Redis SET keys and store the result in a new set
+
+
+
+
+ Redis|bool
+
+
+
save ()
+
+
Persist the Redis database to disk. This command will block the server until the save is
+completed. For a nonblocking alternative, see Redis::bgsave().
+
+
+
+
+ array|false
+
+
+
scan (int|null $iterator, string|null $pattern = null, int $count = 0, string $type = NULL)
+
+
Incrementally scan the Redis keyspace, with optional pattern and type matching.
+
+
+
+
+ Redis|int|false
+
+
+
scard (string $key)
+
+
Retrieve the number of members in a Redis set.
+
+
+
+
+ mixed
+
+
+
script (string $command, mixed ...$args)
+
+
An administrative command used to interact with LUA scripts stored on the server.
+
+
+
+
+ Redis|bool
+
+
+
select (int $db)
+
+
Select a specific Redis database.
+
+
+
+
+ Redis|string|bool
+
+
+
set (string $key, mixed $value, mixed $options = NULL)
+
+
Create or set a Redis STRING key to a value.
+
+
+
+
+ Redis|int|false
+
+
+
setBit (string $key, int $idx, bool $value)
+
+
Set a specific bit in a Redis string to zero or one
+
+
+
+
+ Redis|int|false
+
+
+
setRange (string $key, int $index, string $value)
+
+
Update or append to a Redis string at a specific starting index
+
+
+
+
+ bool
+
+
+
setOption (int $option, mixed $value)
+
+
Set a configurable option on the Redis object.
+
+
+
+
+
+
setex (string $key, int $expire, mixed $value)
+
+
Set a Redis STRING key with a specific expiration in seconds.
+
+
+
+
+ Redis|bool
+
+
+
setnx (string $key, mixed $value)
+
+
Set a key to a value, but only if that key does not already exist.
+
+
+
+
+ Redis|bool
+
+
+
sismember (string $key, mixed $value)
+
+
Check whether a given value is the member of a Redis SET.
+
+
+
+
+ Redis|bool
+
+
+
slaveof (string $host = NULL, int $port = 6379)
+
deprecated
+
Turn a redis instance into a replica of another or promote a replica
+to a primary.
+
+
+
+
+ Redis|bool
+
+
+
replicaof (string $host = NULL, int $port = 6379)
+
+
Used to turn a Redis instance into a replica of another, or to remove
+replica status promoting the instance to a primary.
+
+
+
+
+ Redis|int|false
+
+
+
touch (array|string $key_or_array, string ...$more_keys)
+
+
Update one or more keys last modified metadata.
+
+
+
+
+ mixed
+
+
+
slowlog (string $operation, int $length = 0)
+
+
Interact with Redis' slowlog functionality in various ways, depending
+on the value of 'operation'.
+
+
+
+
+ mixed
+
+
+
sort (string $key, array|null $options = null)
+
+
Sort the contents of a Redis key in various ways.
+
+
+
+
+ mixed
+
+
+
sort_ro (string $key, array|null $options = null)
+
+
This is simply a read-only variant of the sort command
+
+
+
+
+ array
+
+
+
sortAsc (string $key, string|null $pattern = null, mixed $get = null, int $offset = -1, int $count = -1, string|null $store = null)
+
deprecated
+
No description
+
+
+
+
+
+ array
+
+
+
sortAscAlpha (string $key, string|null $pattern = null, mixed $get = null, int $offset = -1, int $count = -1, string|null $store = null)
+
deprecated
+
No description
+
+
+
+
+
+ array
+
+
+
sortDesc (string $key, string|null $pattern = null, mixed $get = null, int $offset = -1, int $count = -1, string|null $store = null)
+
deprecated
+
No description
+
+
+
+
+
+ array
+
+
+
sortDescAlpha (string $key, string|null $pattern = null, mixed $get = null, int $offset = -1, int $count = -1, string|null $store = null)
+
deprecated
+
No description
+
+
+
+
+
+ Redis|int|false
+
+
+
srem (string $key, mixed $value, mixed ...$other_values)
+
+
Remove one or more values from a Redis SET key.
+
+
+
+
+ array|false
+
+
+
sscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
Scan the members of a redis SET key.
+
+
+
+
+ Redis|int|false
+
+
+
strlen (string $key)
+
+
Retrieve the length of a Redis STRING key.
+
+
+
+
+ bool
+
+
+
subscribe (array $channels, callable $cb)
+
+
Subscribe to one or more Redis pubsub channels.
+
+
+
+
+ Redis|bool
+
+
+
swapdb (int $src, int $dst)
+
+
Atomically swap two Redis databases so that all of the keys in the source database will
+now be in the destination database and vice-versa.
+
+
+
+
+ Redis|array
+
+
+
time ()
+
+
Retrieve the server time from the connected Redis instance.
+
+
+
+
+ Redis|int|false
+
+
+
ttl (string $key)
+
+
Get the amount of time a Redis key has before it will expire, in seconds.
+
+
+
+
+ Redis|int|false
+
+
+
type (string $key)
+
+
Get the type of a given Redis key.
+
+
+
+
+ Redis|int|false
+
+
+
unlink (array|string $key, string ...$other_keys)
+
+
Delete one or more keys from the Redis database. Unlike this operation, the actual
+deletion is asynchronous, meaning it is safe to delete large keys without fear of
+Redis blocking for a long period of time.
+
+
+
+
+ Redis|array|bool
+
+
+
unsubscribe (array $channels)
+
+
Unsubscribe from one or more subscribed channels.
+
+
+
+
+ Redis|bool
+
+
+
unwatch ()
+
+
Remove any previously WATCH'ed keys in a transaction.
+
+
+
+
+
+
watch (array|string $key, string ...$other_keys)
+
+
No description
+
+
+
+
+
+ int|false
+
+
+
wait (int $numreplicas, int $timeout)
+
+
Block the client up to the provided timeout until a certain number of replicas have confirmed
+recieving them.
+
+
+
+
+ int|false
+
+
+
xack (string $key, string $group, array $ids)
+
+
No description
+
+
+
+
+
+ Redis|string|false
+
+
+
xadd (string $key, string $id, array $values, int $maxlen = 0, bool $approx = false, bool $nomkstream = false)
+
+
Append a message to a stream.
+
+
+
+
+ Redis|bool|array
+
+
+
xautoclaim (string $key, string $group, string $consumer, int $min_idle, string $start, int $count = -1, bool $justid = false)
+
+
No description
+
+
+
+
+
+ Redis|bool|array
+
+
+
xclaim (string $key, string $group, string $consumer, int $min_idle, array $ids, array $options)
+
+
No description
+
+
+
+
+
+ Redis|int|false
+
+
+
xdel (string $key, array $ids)
+
+
Remove one or more specific IDs from a stream.
+
+
+
+
+ mixed
+
+
+
xgroup (string $operation, string $key = null, string $group = null, string $id_or_consumer = null, bool $mkstream = false, int $entries_read = -2)
+
+
XGROUP
+
+
+
+
+ mixed
+
+
+
xinfo (string $operation, string|null $arg1 = null, string|null $arg2 = null, int $count = -1)
+
+
Retrieve information about a stream key.
+
+
+
+
+ Redis|int|false
+
+
+
xlen (string $key)
+
+
Get the number of messages in a Redis STREAM key.
+
+
+
+
+ Redis|array|false
+
+
+
xpending (string $key, string $group, string|null $start = null, string|null $end = null, int $count = -1, string|null $consumer = null)
+
+
Interact with stream messages that have been consumed by a consumer group but not yet
+acknowledged with XACK.
+
+
+
+
+ Redis|array|bool
+
+
+
xrange (string $key, string $start, string $end, int $count = -1)
+
+
Get a range of entries from a STREAM key.
+
+
+
+
+ Redis|array|bool
+
+
+
xread (array $streams, int $count = -1, int $block = -1)
+
+
Consume one or more unconsumed elements in one or more streams.
+
+
+
+
+ Redis|array|bool
+
+
+
xreadgroup (string $group, string $consumer, array $streams, int $count = 1, int $block = 1)
+
+
Read one or more messages using a consumer group.
+
+
+
+
+ Redis|array|bool
+
+
+
xrevrange (string $key, string $end, string $start, int $count = -1)
+
+
Get a range of entries from a STREAM ke in reverse cronological order.
+
+
+
+
+ Redis|int|false
+
+
+
xtrim (string $key, string $threshold, bool $approx = false, bool $minid = false, int $limit = -1)
+
+
Truncate a STREAM key in various ways.
+
+
+
+
+ Redis|int|false
+
+
+
zAdd (string $key, array|float $score_or_options, mixed ...$more_scores_and_mems)
+
+
Add one or more elements and scores to a Redis sorted set.
+
+
+
+
+ Redis|int|false
+
+
+
zCard (string $key)
+
+
Return the number of elements in a sorted set.
+
+
+
+
+ Redis|int|false
+
+
+
zCount (string $key, string $start, string $end)
+
+
Count the number of members in a sorted set with scores inside a provided range.
+
+
+
+
+ Redis|float|false
+
+
+
zIncrBy (string $key, float $value, mixed $member)
+
+
Create or increment the score of a member in a Redis sorted set
+
+
+
+
+ Redis|int|false
+
+
+
zLexCount (string $key, string $min, string $max)
+
+
Count the number of elements in a sorted set whos members fall within the provided
+lexographical range.
+
+
+
+
+ Redis|array|false
+
+
+
zMscore (string $key, mixed $member, mixed ...$other_members)
+
+
Retrieve the score of one or more members in a sorted set.
+
+
+
+
+ Redis|array|false
+
+
+
zPopMax (string $key, int $count = null)
+
+
Pop one or more of the highest scoring elements from a sorted set.
+
+
+
+
+ Redis|array|false
+
+
+
zPopMin (string $key, int $count = null)
+
+
Pop one or more of the lowest scoring elements from a sorted set.
+
+
+
+
+ Redis|array|false
+
+
+
zRange (string $key, mixed $start, mixed $end, array|bool|null $options = null)
+
+
Retrieve a range of elements of a sorted set between a start and end point.
+
+
+
+
+ Redis|array|false
+
+
+
zRangeByLex (string $key, string $min, string $max, int $offset = -1, int $count = -1)
+
+
Retrieve a range of elements from a sorted set by legographical range.
+
+
+
+
+ Redis|array|false
+
+
+
zRangeByScore (string $key, string $start, string $end, array $options = [])
+
+
Retrieve a range of members from a sorted set by their score.
+
+
+
+
+ Redis|int|false
+
+
+
zrangestore (string $dstkey, string $srckey, string $start, string $end, array|bool|null $options = NULL)
+
+
This command is similar to ZRANGE except that instead of returning the values directly
+it will store them in a destination key provided by the user
+
+
+
+
+ Redis|string|array
+
+
+
zRandMember (string $key, array $options = null)
+
+
Retrieve one or more random members from a Redis sorted set.
+
+
+
+
+ Redis|int|false
+
+
+
zRank (string $key, mixed $member)
+
+
Get the rank of a member of a sorted set, by score.
+
+
+
+
+ Redis|int|false
+
+
+
zRem (mixed $key, mixed $member, mixed ...$other_members)
+
+
Remove one or more members from a Redis sorted set.
+
+
+
+
+ Redis|int|false
+
+
+
zRemRangeByLex (string $key, string $min, string $max)
+
+
Remove zero or more elements from a Redis sorted set by legographical range.
+
+
+
+
+ Redis|int|false
+
+
+
zRemRangeByRank (string $key, int $start, int $end)
+
+
Remove one or more members of a sorted set by their rank.
+
+
+
+
+ Redis|int|false
+
+
+
zRemRangeByScore (string $key, string $start, string $end)
+
+
Remove one or more members of a sorted set by their score.
+
+
+
+
+ Redis|array|false
+
+
+
zRevRange (string $key, int $start, int $end, mixed $scores = null)
+
+
List the members of a Redis sorted set in reverse order
+
+
+
+
+ Redis|array|false
+
+
+
zRevRangeByLex (string $key, string $max, string $min, int $offset = -1, int $count = -1)
+
+
List members of a Redis sorted set within a legographical range, in reverse order.
+
+
+
+
+ Redis|array|false
+
+
+
zRevRangeByScore (string $key, string $max, string $min, array|bool $options = [])
+
+
List elements from a Redis sorted set by score, highest to lowest
+
+
+
+
+ Redis|int|false
+
+
+
zRevRank (string $key, mixed $member)
+
+
Retrieve a member of a sorted set by reverse rank.
+
+
+
+
+ Redis|float|false
+
+
+
zScore (string $key, mixed $member)
+
+
Get the score of a member of a sorted set.
+
+
+
+
+ Redis|array|false
+
+
+
zdiff (array $keys, array $options = null)
+
+
Given one or more sorted set key names, return every element that is in the first
+set but not any of the others.
+
+
+
+
+ Redis|int|false
+
+
+
zdiffstore (string $dst, array $keys)
+
+
Store the difference of one or more sorted sets in a destination sorted set.
+
+
+
+
+ Redis|array|false
+
+
+
zinter (array $keys, array|null $weights = null, array|null $options = null)
+
+
Compute the intersection of one or more sorted sets and return the members
+
+
+
+
+ Redis|int|false
+
+
+
zintercard (array $keys, int $limit = -1)
+
+
Similar to ZINTER but instead of returning the intersected values, this command returns the
+cardinality of the intersected set.
+
+
+
+
+ Redis|int|false
+
+
+
zinterstore (string $dst, array $keys, array|null $weights = null, string|null $aggregate = null)
+
+
Compute the intersection of one ore more sorted sets storing the result in a new sorted set.
+
+
+
+
+ Redis|array|false
+
+
+
zscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
Scan the members of a sorted set incrementally, using a cursor
+
+
+
+
+ Redis|array|false
+
+
+
zunion (array $keys, array|null $weights = null, array|null $options = null)
+
+
Retrieve the union of one or more sorted sets
+
+
+
+
+ Redis|int|false
+
+
+
zunionstore (string $dst, array $keys, array|null $weights = NULL, string|null $aggregate = NULL)
+
+
Perform a union on one or more Redis sets and store the result in a destination sorted set.
+
+
+
+
+
+
Details
+
+
+
+
+
+
+ __construct (array $options = null)
+
+
+
+
+
+
+
+
Create a new Redis instance. If passed sufficient information in the
+options array it is also possible to connect to an instance at the same
+time.
+
+
+
+
+
+
+
+
+
+ __destruct ()
+
+
+
+
+
+
+
+
+ string
+ _compress (string $value)
+
+
+
+
+
+
+
+
Compress a value with the currently configured compressor as set with
+Redis::setOption().
+
+
+
+
+
+
+
+
+ string
+ _uncompress (string $value)
+
+
+
+
+
+
+
+
Uncompress the provided argument that has been compressed with the
+currently configured compressor as set with Redis::setOption().
+
+
+
+
+
+
+
+
+ string
+ _prefix (string $key)
+
+
+
+
+
+
+
+
Prefix the passed argument with the currently set key prefix as set
+with Redis::setOption().
+
+
+
+
+
+
+
+
+ string
+ _serialize (mixed $value)
+
+
+
+
+
+
+
+
Serialize the provided value with the currently set serializer as set
+with Redis::setOption().
+
+
+
+
+
+
+
+
+ mixed
+ _unserialize (string $value)
+
+
+
+
+
+
+
+
Unserialize the passed argument with the currently set serializer as set
+with Redis::setOption().
+
+
+
+
+
+
+
+
+ string
+ _pack (mixed $value)
+
+
+
+
+
+
+
+
Pack the provided value with the configured serializer and compressor
+as set with Redis::setOption().
+
+
+
+
+
+
+
+
+ mixed
+ _unpack (string $value)
+
+
+
+
+
+
+
+
Unpack the provided value with the configured compressor and serializer
+as set with Redis::setOption().
+
+
+
+
+
+
+
+
+ mixed
+ acl (string $subcmd, string ...$args)
+
+
+
+
+
+
+
+
+ Redis|int|false
+ append (string $key, mixed $value)
+
+
+
+
+
+
+
+
Append data to a Redis STRING key.
+
+
+
+
+
+
+
+
+ Redis|bool
+ auth (mixed $credentials)
+
+
+
+
+
+
+
+
Authenticate a Redis connection after its been established.
+
+
+
+
+
+
+
+
+ Redis|bool
+ bgSave ()
+
+
+
+
+
+
+
+
Execute a save of the Redis database in the background.
+
+
+
+
+
+
+
+
+ Redis|bool
+ bgrewriteaof ()
+
+
+
+
+
+
+
+
Asynchronously rewrite Redis' append-only file
+
+
+
+
+
+
+
+
+ Redis|int|false
+ bitcount (string $key, int $start = 0, int $end = -1, bool $bybit = false)
+
+
+
+
+
+
+
+
Count the number of set bits in a Redis string.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ bitop (string $operation, string $deskey, string $srckey, string ...$other_keys)
+
+
+
+
+
+
+
+
+ Redis|int|false
+ bitpos (string $key, bool $bit, int $start = 0, int $end = -1, bool $bybit = false)
+
+
+
+
+
+
+
+
Return the position of the first bit set to 0 or 1 in a string.
+
+
+
+
+
+
+
+
+ Redis|array|null|false
+ blPop (string|array $key_or_keys, string|float|int $timeout_or_key, mixed ...$extra_args)
+
+
+
+
+
+
+
+
Pop an element off the beginning of a Redis list or lists, potentially blocking up to a specified
+timeout. This method may be called in two distinct ways, of which examples are provided below.
+
+
+
+
+
+
+
+
+ Redis|array|null|false
+ brPop (string|array $key_or_keys, string|float|int $timeout_or_key, mixed ...$extra_args)
+
+
+
+
+
+
+
+
Pop an element off of the end of a Redis list or lists, potentially blocking up to a specified timeout.
The calling convention is identical to Redis::blPop() so see that documentation for more details.
+
+
+
+
+
+
+
+
+ Redis|string|false
+ brpoplpush (string $src, string $dst, int|float $timeout)
+
+
+
+
+
+
+
+
Pop an element from the end of a Redis list, pushing it to the beginning of another Redis list,
+optionally blocking up to a specified timeout.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ bzPopMax (string|array $key, string|int $timeout_or_key, mixed ...$extra_args)
+
+
+
+
+
+
+
+
POP the maximum scoring element off of one or more sorted sets, blocking up to a specified
+timeout if no elements are available.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ bzPopMin (string|array $key, string|int $timeout_or_key, mixed ...$extra_args)
+
+
+
+
+
+
+
+
POP the minimum scoring element off of one or more sorted sets, blocking up to a specified timeout
+if no elements are available
This command is identical in semantics to bzPopMax so please see that method for more information.
+
+
+
+
+
+
+
+
+ Redis|array|null|false
+ bzmpop (float $timeout, array $keys, string $from, int $count = 1)
+
+
+
+
+
+
+
+
POP one or more elements from one or more sorted sets, blocking up to a specified amount of time
+when no elements are available.
+
+
+
+
+
+
+
+
+ Redis|array|null|false
+ zmpop (array $keys, string $from, int $count = 1)
+
+
+
+
+
+
+
+
POP one or more of the highest or lowest scoring elements from one or more sorted sets.
+
+
+
+
+
+
+
+
+ Redis|array|null|false
+ blmpop (float $timeout, array $keys, string $from, int $count = 1)
+
+
+
+
+
+
+
+
Pop one or more elements from one or more Redis LISTs, blocking up to a specified timeout when
+no elements are available.
+
+
+
+
+
+
+
+
+ Redis|array|null|false
+ lmpop (array $keys, string $from, int $count = 1)
+
+
+
+
+
+
+
+
Pop one or more elements off of one or more Redis LISTs.
+
+
+
+
+
+
+
+
+ bool
+ clearLastError ()
+
+
+
+
+
+
+
+
Reset any last error on the connection to NULL
+
+
+
+
+
+
+
+
+ mixed
+ client (string $opt, mixed ...$args)
+
+
+
+
+
+
+
+
+ bool
+ close ()
+
+
+
+
+
+
+
+
+ mixed
+ command (string $opt = null, string|array $arg)
+
+
+
+
+
+
+
+
+ mixed
+ config (string $operation, array|string|null $key_or_settings = NULL, string|null $value = NULL)
+
+
+
+
+
+
+
+
Execute the Redis CONFIG command in a variety of ways. What the command does in particular depends
+on the $operation qualifier.
Operations that PhpRedis supports are: RESETSTAT, REWRITE, GET, and SET.
+
+
+
+
+
+
+
+
+ bool
+ connect (string $host, int $port = 6379, float $timeout = 0, string $persistent_id = null, int $retry_interval = 0, float $read_timeout = 0, array $context = null)
+
+
+
+
+
+
+
+
+ Redis|bool
+ copy (string $src, string $dst, array $options = null)
+
+
+
+
+
+
+
+
Make a copy of a redis key.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ dbSize ()
+
+
+
+
+
+
+
+
Return the number of keys in the currently selected Redis database.
+
+
+
+
+
+
+
+
+ Redis|string
+ debug (string $key)
+
+
+
+
+
+
+
+
+ Redis|int|false
+ decr (string $key, int $by = 1)
+
+
+
+
+
+
+
+
Decrement a Redis integer by 1 or a provided value.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ decrBy (string $key, int $value)
+
+
+
+
+
+
+
+
Decrement a redis integer by a value
+
+
+
+
+
+
+
+
+ Redis|int|false
+ del (array|string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
Delete one or more keys from Redis.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ delete (array|string $key, string ...$other_keys)
+ deprecated
+
+
+
+ deprecated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Redis|bool
+ discard ()
+
+
+
+
+
+
+
+
Discard a transaction currently in progress.
+
+
+
+
+
+
+
+
+ Redis|string
+ dump (string $key)
+
+
+
+
+
+
+
+
Dump Redis' internal binary representation of a key.
+
+
+
+
+
+
+
+
+ Redis|string|false
+ echo (string $str)
+
+
+
+
+
+
+
+
Have Redis repeat back an arbitrary string to the client.
+
+
+
+
+
+
+
+
+ mixed
+ eval (string $script, array $args = [], int $num_keys = 0)
+
+
+
+
+
+
+
+
Execute a LUA script on the redis server.
+
+
+
+
+
+
+
+
+ mixed
+ eval_ro (string $script_sha, array $args = [], int $num_keys = 0)
+
+
+
+
+
+
+
+
This is simply the read-only variant of eval, meaning the underlying script
+may not modify data in redis.
+
+
+
+
+
+
+
+
+ mixed
+ evalsha (string $sha1, array $args = [], int $num_keys = 0)
+
+
+
+
+
+
+
+
Execute a LUA script on the server but instead of sending the script, send
+the SHA1 hash of the script.
+
+
+
+
+
+
+
+
+ mixed
+ evalsha_ro (string $sha1, array $args = [], int $num_keys = 0)
+
+
+
+
+
+
+
+
This is simply the read-only variant of evalsha, meaning the underlying script
+may not modify data in redis.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ exec ()
+
+
+
+
+
+
+
+
Execute either a MULTI or PIPELINE block and return the array of replies.
+
+
+
+
+
+
+
+
+ Redis|int|bool
+ exists (mixed $key, mixed ...$other_keys)
+
+
+
+
+
+
+
+
Test if one or more keys exist.
+
+
+
+
+
+
+
+
+ Redis|bool
+ expire (string $key, int $timeout, string|null $mode = NULL)
+
+
+
+
+
+
+
+
Sets an expiration in seconds on the key in question. If connected to
+redis-server >= 7.0.0 you may send an additional "mode" argument which
+modifies how the command will execute.
+
+
+
+
+
+
+
+
+ Redis|bool
+ expireAt (string $key, int $timestamp, string|null $mode = NULL)
+
+
+
+
+
+
+
+
Set a key's expiration to a specific Unix timestamp in seconds. If
+connected to Redis >= 7.0.0 you can pass an optional 'mode' argument.
+
+
+
+
+
+
+
+
+ Redis|bool
+ failover (array|null $to = null, bool $abort = false, int $timeout = 0)
+
+
+
+
+
+
+
+
+ Redis|int|false
+ expiretime (string $key)
+
+
+
+
+
+
+
+
Get the expiration of a given key as a unix timestamp
+
+
+
+
+
+
+
+
+ Redis|int|false
+ pexpiretime (string $key)
+
+
+
+
+
+
+
+
Get the expriation timestamp of a given Redis key but in milliseconds.
+
+
+
+
+
+
+
+
+ Redis|bool
+ flushAll (bool|null $sync = null)
+
+
+
+
+
+
+
+
Deletes every key in all Redis databases
+
+
+
+
+
+
+
+
+ Redis|bool
+ flushDB (bool|null $sync = null)
+
+
+
+
+
+
+
+
Deletes all the keys of the currently selected database.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ geoadd (string $key, float $lng, float $lat, string $member, mixed ...$other_triples_and_options)
+
+
+
+
+
+
+
+
+ Redis|float|false
+ geodist (string $key, string $src, string $dst, string|null $unit = null)
+
+
+
+
+
+
+
+
+ Redis|array|false
+ geohash (string $key, string $member, string ...$other_members)
+
+
+
+
+
+
+
+
+ Redis|array|false
+ geopos (string $key, string $member, string ...$other_members)
+
+
+
+
+
+
+
+
+ mixed
+ georadius (string $key, float $lng, float $lat, float $radius, string $unit, array $options = [])
+
+
+
+
+
+
+
+
+ mixed
+ georadius_ro (string $key, float $lng, float $lat, float $radius, string $unit, array $options = [])
+
+
+
+
+
+
+
+
+ mixed
+ georadiusbymember (string $key, string $member, float $radius, string $unit, array $options = [])
+
+
+
+
+
+
+
+
+ mixed
+ georadiusbymember_ro (string $key, string $member, float $radius, string $unit, array $options = [])
+
+
+
+
+
+
+
+
+ array
+ geosearch (string $key, array|string $position, array|int|float $shape, string $unit, array $options = [])
+
+
+
+
+
+
+
+
+ Redis|array|int|false
+ geosearchstore (string $dst, string $src, array|string $position, array|int|float $shape, string $unit, array $options = [])
+
+
+
+
+
+
+
+
+ mixed
+ get (string $key)
+
+
+
+
+
+
+
+
+ mixed
+ getAuth ()
+
+
+
+
+
+
+
+
Get the authentication information on the connection, if any.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ getBit (string $key, int $idx)
+
+
+
+
+
+
+
+
+ Redis|string|bool
+ getEx (string $key, array $options = [])
+
+
+
+
+
+
+
+
+ int
+ getDBNum ()
+
+
+
+
+
+
+
+
+ Redis|string|bool
+ getDel (string $key)
+
+
+
+
+
+
+
+
+ string
+ getHost ()
+
+
+
+
+
+
+
+
Return the host or Unix socket we are connected to.
+
+
+
+
+
+
+
+
+ string|null
+ getLastError ()
+
+
+
+
+
+
+
+
Get the last error returned to us from Redis, if any.
+
+
+
+
+
+
+
+
+
+
+
+
+
Returns whether the connection is in ATOMIC, MULTI, or PIPELINE mode
+
+
+
+
+
+
+
+
+ mixed
+ getOption (int $option)
+
+
+
+
+
+
+
+
Retrieve the value of a configuration setting as set by Redis::setOption()
+
+
+
+
+
+
+
+
+ string|null
+ getPersistentID ()
+
+
+
+
+
+
+
+
Get the persistent connection ID, if there is one.
+
+
+
+
+
+
+
+
+
+
+
+
+
Get the port we are connected to. This number will be zero if we are connected to a unix socket.
+
+
+
+
+
+
+
+
+ Redis|string|false
+ getRange (string $key, int $start, int $end)
+
+
+
+
+
+
+
+
Retrieve a substring of a string by index.
+
+
+
+
+
+
+
+
+ Redis|string|array|int|false
+ lcs (string $key1, string $key2, array|null $options = NULL)
+
+
+
+
+
+
+
+
Get the longest common subsequence between two string keys.
+
+
+
+
+
+
+
+
+ float
+ getReadTimeout ()
+
+
+
+
+
+
+
+
Get the currently set read timeout on the connection.
+
+
+
+
+
+
+
+
+ Redis|string|false
+ getset (string $key, mixed $value)
+
+
+
+
+
+
+
+
Sets a key and returns any previously set value, if the key already existed.
+
+
+
+
+
+
+
+
+ float|false
+ getTimeout ()
+
+
+
+
+
+
+
+
Retrieve any set connection timeout
+
+
+
+
+
+
+
+
+ int|false
+ getTransferredBytes ()
+
+
+
+
+
+
+
+
+ Redis|int|false
+ hDel (string $key, string $field, string ...$other_fields)
+
+
+
+
+
+
+
+
Remove one or more fields from a hash.
+
+
+
+
+
+
+
+
+ Redis|bool
+ hExists (string $key, string $field)
+
+
+
+
+
+
+
+
Checks whether a field exists in a hash.
+
+
+
+
+
+
+
+
+ mixed
+ hGet (string $key, string $member)
+
+
+
+
+
+
+
+
+ Redis|array|false
+ hGetAll (string $key)
+
+
+
+
+
+
+
+
Read every field and value from a hash.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ hIncrBy (string $key, string $field, int $value)
+
+
+
+
+
+
+
+
Increment a hash field's value by an integer
+
+
+
+
+
+
+
+
+ Redis|float|false
+ hIncrByFloat (string $key, string $field, float $value)
+
+
+
+
+
+
+
+
Increment a hash field by a floating point value
+
+
+
+
+
+
+
+
+ Redis|array|false
+ hKeys (string $key)
+
+
+
+
+
+
+
+
Retrieve all of the fields of a hash.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ hLen (string $key)
+
+
+
+
+
+
+
+
Get the number of fields in a hash.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ hMget (string $key, array $fields)
+
+
+
+
+
+
+
+
Get one or more fields from a hash.
+
+
+
+
+
+
+
+
+ Redis|bool
+ hMset (string $key, array $fieldvals)
+
+
+
+
+
+
+
+
Add or update one or more hash fields and values
+
+
+
+
+
+
+
+
+ Redis|string|array
+ hRandField (string $key, array $options = null)
+
+
+
+
+
+
+
+
Get one or more random field from a hash.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ hSet (string $key, string $member, mixed $value)
+
+
+
+
+
+
+
+
+ Redis|bool
+ hSetNx (string $key, string $field, string $value)
+
+
+
+
+
+
+
+
Set a hash field and value, but only if that field does not exist
+
+
+
+
+
+
+
+
+ Redis|int|false
+ hStrLen (string $key, string $field)
+
+
+
+
+
+
+
+
Get the string length of a hash field
+
+
+
+
+
+
+
+
+ Redis|array|false
+ hVals (string $key)
+
+
+
+
+
+
+
+
Get all of the values from a hash.
+
+
+
+
+
+
+
+
+ Redis|array|bool
+ hscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
+
+
+
+
+
+
Iterate over the fields and values of a hash in an incremental fashion.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ incr (string $key, int $by = 1)
+
+
+
+
+
+
+
+
Increment a key's value, optionally by a specifc amount.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ incrBy (string $key, int $value)
+
+
+
+
+
+
+
+
Increment a key by a specific integer value
+
+
+
+
+
+
+
+
+ Redis|float|false
+ incrByFloat (string $key, float $value)
+
+
+
+
+
+
+
+
Increment a numeric key by a floating point value.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ info (string ...$sections)
+
+
+
+
+
+
+
+
Retrieve information about the connected redis-server. If no arguments are passed to
+this function, redis will return every info field. Alternatively you may pass a specific
+section you want returned (e.g. 'server', or 'memory') to receive only information pertaining
+to that section.
If connected to Redis server >= 7.0.0 you may pass multiple optional sections.
+
+
+
+
+
+
+
+
+ bool
+ isConnected ()
+
+
+
+
+
+
+
+
Check if we are currently connected to a Redis instance.
+
+
+
+
+
+
+
+
+ Redis |array|false
+ keys (string $pattern)
+
+
+
+
+
+
+
+
+ Redis |int|false
+ lInsert (string $key, string $pos, mixed $pivot, mixed $value)
+
+
+
+
+
+
+
+
+ Redis|int|false
+ lLen (string $key)
+
+
+
+
+
+
+
+
+ Redis|string|false
+ lMove (string $src, string $dst, string $wherefrom, string $whereto)
+
+
+
+
+
+
+
+
+ Redis|bool|string|array
+ lPop (string $key, int $count = 0)
+
+
+
+
+
+
+
+
+ Redis|null|bool|int|array
+ lPos (string $key, mixed $value, array $options = null)
+
+
+
+
+
+
+
+
+ int|Redis
+ lPush (string $key, mixed ...$elements)
+
+
+
+
+
+
+
+
+ Redis |int|false
+ rPush (string $key, mixed ...$elements)
+
+
+
+
+
+
+
+
+ Redis |int|false
+ lPushx (string $key, mixed $value)
+
+
+
+
+
+
+
+
+ Redis |int|false
+ rPushx (string $key, mixed $value)
+
+
+
+
+
+
+
+
+ Redis|bool
+ lSet (string $key, int $index, mixed $value)
+
+
+
+
+
+
+
+
+ int
+ lastSave ()
+
+
+
+
+
+
+
+
+ mixed
+ lindex (string $key, int $index)
+
+
+
+
+
+
+
+
+ Redis|array|false
+ lrange (string $key, int $start, int $end)
+
+
+
+
+
+
+
+
+ int|Redis |false
+ lrem (string $key, mixed $value, int $count = 0)
+
+
+
+
+
+
+
+
+ Redis|bool
+ ltrim (string $key, int $start, int $end)
+
+
+
+
+
+
+
+
+ array|Redis
+ mget (array $keys)
+
+
+
+
+
+
+
+
+ Redis|bool
+ migrate (string $host, int $port, string|array $key, int $dstdb, int $timeout, bool $copy = false, bool $replace = false, mixed $credentials = NULL)
+
+
+
+
+
+
+
+
+ bool
+ move (string $key, int $index)
+
+
+
+
+
+
+
+
+ Redis|bool
+ mset (array $key_values)
+
+
+
+
+
+
+
+
+ Redis|bool
+ msetnx (array $key_values)
+
+
+
+
+
+
+
+
+ bool|Redis
+ multi (int $value = Redis::MULTI)
+
+
+
+
+
+
+
+
+ Redis|int|string|false
+ object (string $subcommand, string $key)
+
+
+
+
+
+
+
+
+ bool
+ open (string $host, int $port = 6379, float $timeout = 0, string $persistent_id = NULL, int $retry_interval = 0, float $read_timeout = 0, array $context = NULL)
+ deprecated
+
+
+
+ deprecated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ bool
+ pconnect (string $host, int $port = 6379, float $timeout = 0, string $persistent_id = NULL, int $retry_interval = 0, float $read_timeout = 0, array $context = NULL)
+
+
+
+
+
+
+
+
+ bool
+ persist (string $key)
+
+
+
+
+
+
+
+
+ bool
+ pexpire (string $key, int $timeout, string|null $mode = NULL)
+
+
+
+
+
+
+
+
Sets an expiration in milliseconds on a given key. If connected to Redis >= 7.0.0
+you can pass an optional mode argument that modifies how the command will execute.
Redis::expire() for a description of the mode argument.
+
+
+
+
+
+
+
+
+ Redis|bool
+ pexpireAt (string $key, int $timestamp, string|null $mode = NULL)
+
+
+
+
+
+
+
+
Set a key's expiration to a specific Unix Timestamp in milliseconds. If connected to
+Redis >= 7.0.0 you can pass an optional 'mode' argument.
+
+
+
+
+
+
+
+
+ Redis|int
+ pfadd (string $key, array $elements)
+
+
+
+
+
+
+
+
Add one or more elements to a Redis HyperLogLog key
+
+
+
+
+
+
+
+
+ Redis|int
+ pfcount (string $key)
+
+
+
+
+
+
+
+
Retrieve the cardinality of a Redis HyperLogLog key.
+
+
+
+
+
+
+
+
+ Redis|bool
+ pfmerge (string $dst, array $srckeys)
+
+
+
+
+
+
+
+
Merge one or more source HyperLogLog sets into a destination set.
+
+
+
+
+
+
+
+
+ Redis|string|bool
+ ping (string $message = NULL)
+
+
+
+
+
+
+
+
PING the redis server with an optional string argument.
+
+
+
+
+
+
+
+
+ bool|Redis
+ pipeline ()
+
+
+
+
+
+
+
+
Enter into pipeline mode.
Pipeline mode is the highest performance way to send many commands to Redis
+as they are aggregated into one stream of commands and then all sent at once
+when the user calls Redis::exec().
+
NOTE: That this is shorthand for Redis::multi(Redis::PIPELINE)
+
+
+
+
+
+
+
+
+ bool
+ popen (string $host, int $port = 6379, float $timeout = 0, string $persistent_id = NULL, int $retry_interval = 0, float $read_timeout = 0, array $context = NULL)
+ deprecated
+
+
+
+ deprecated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ bool|Redis
+ psetex (string $key, int $expire, mixed $value)
+
+
+
+
+
+
+
+
+ bool
+ psubscribe (array $patterns, callable $cb)
+
+
+
+
+
+
+
+
Subscribe to one or more glob-style patterns
+
+
+
+
+
+
+
+
+ Redis|int|false
+ pttl (string $key)
+
+
+
+
+
+
+
+
Get a keys time to live in milliseconds.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ publish (string $channel, string $message)
+
+
+
+
+
+
+
+
Publish a message to a pubsub channel
+
+
+
+
+
+
+
+
+ mixed
+ pubsub (string $command, mixed $arg = null)
+
+
+
+
+
+
+
+
+ Redis|array|bool
+ punsubscribe (array $patterns)
+
+
+
+
+
+
+
+
Unsubscribe from one or more channels by pattern
+
+
+
+
+
+
+
+
+ Redis|array|string|bool
+ rPop (string $key, int $count = 0)
+
+
+
+
+
+
+
+
Pop one or more elements from the end of a list.
+
+
+
+
+
+
+
+
+ Redis|string|false
+ randomKey ()
+
+
+
+
+
+
+
+
Return a random key from the current database
+
+
+
+
+
+
+
+
+ mixed
+ rawcommand (string $command, mixed ...$args)
+
+
+
+
+
+
+
+
Execute any arbitrary Redis command by name.
+
+
+
+
+
+
+
+
+ Redis|bool
+ rename (string $old_name, string $new_name)
+
+
+
+
+
+
+
+
Unconditionally rename a key from $old_name to $new_name
+
+
+
+
+
+
+
+
+ Redis|bool
+ renameNx (string $key_src, string $key_dst)
+
+
+
+
+
+
+
+
Renames $key_src to $key_dst but only if newkey does not exist.
+
+
+
+
+
+
+
+
+ Redis|bool
+ reset ()
+
+
+
+
+
+
+
+
Reset the state of the connection.
+
+
+
+
+
+
+
+
+ Redis|bool
+ restore (string $key, int $ttl, string $value, array|null $options = NULL)
+
+
+
+
+
+
+
+
Restore a key by the binary payload generated by the DUMP command.
+
+
+
+
+
+
+
+
+
+
+
+
+
Query whether the connected instance is a primary or replica
+
+
+
+
+
+
+
+
+ Redis|string|false
+ rpoplpush (string $srckey, string $dstkey)
+
+
+
+
+
+
+
+
Atomically pop an element off the end of a Redis LIST and push it to the beginning of
+another.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ sAdd (string $key, mixed $value, mixed ...$other_values)
+
+
+
+
+
+
+
+
Add one or more values to a Redis SET key.
+
+
+
+
+
+
+
+
+ int
+ sAddArray (string $key, array $values)
+
+
+
+
+
+
+
+
Add one ore more values to a Redis SET key. This is an alternative to Redis::sadd() but
+instead of being variadic, takes a single array of values.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ sDiff (string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
Given one or more Redis SETS, this command returns all of the members from the first
+set that are not in any subsequent set.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ sDiffStore (string $dst, string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
This method performs the same operation as SDIFF except it stores the resulting diff
+values in a specified destination key.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ sInter (array|string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
Given one or more Redis SET keys, this command will return all of the elements that are
+in every one.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ sintercard (array $keys, int $limit = -1)
+
+
+
+
+
+
+
+
Compute the intersection of one or more sets and return the cardinality of the result.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ sInterStore (array|string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
Perform the intersection of one or more Redis SETs, storing the result in a destination
+key, rather than returning them.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ sMembers (string $key)
+
+
+
+
+
+
+
+
Retrieve every member from a set key.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ sMisMember (string $key, string $member, string ...$other_members)
+
+
+
+
+
+
+
+
Check if one or more values are members of a set.
+
+
+
+
+
+
+
+
+ Redis|bool
+ sMove (string $src, string $dst, mixed $value)
+
+
+
+
+
+
+
+
Pop a member from one set and push it onto another. This command will create the
+destination set if it does not currently exist.
+
+
+
+
+
+
+
+
+ Redis|string|array|false
+ sPop (string $key, int $count = 0)
+
+
+
+
+
+
+
+
Remove one or more elements from a set.
+
+
+
+
+
+
+
+
+ Redis|string|array|false
+ sRandMember (string $key, int $count = 0)
+
+
+
+
+
+
+
+
Retrieve one or more random members of a set.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ sUnion (string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
Returns the union of one or more Redis SET keys.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ sUnionStore (string $dst, string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
Perform a union of one or more Redis SET keys and store the result in a new set
+
+
+
+
+
+
+
+
+ Redis|bool
+ save ()
+
+
+
+
+
+
+
+
Persist the Redis database to disk. This command will block the server until the save is
+completed. For a nonblocking alternative, see Redis::bgsave().
+
+
+
+
+
+
+
+
+ array|false
+ scan (int|null $iterator, string|null $pattern = null, int $count = 0, string $type = NULL)
+
+
+
+
+
+
+
+
Incrementally scan the Redis keyspace, with optional pattern and type matching.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ scard (string $key)
+
+
+
+
+
+
+
+
Retrieve the number of members in a Redis set.
+
+
+
+
+
+
+
+
+ mixed
+ script (string $command, mixed ...$args)
+
+
+
+
+
+
+
+
An administrative command used to interact with LUA scripts stored on the server.
+
+
+
+
+
+
+
+
+ Redis|bool
+ select (int $db)
+
+
+
+
+
+
+
+
Select a specific Redis database.
+
+
+
+
+
+
+
+
+ Redis|string|bool
+ set (string $key, mixed $value, mixed $options = NULL)
+
+
+
+
+
+
+
+
Create or set a Redis STRING key to a value.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ setBit (string $key, int $idx, bool $value)
+
+
+
+
+
+
+
+
Set a specific bit in a Redis string to zero or one
+
+
+
+
+
+
+
+
+ Redis|int|false
+ setRange (string $key, int $index, string $value)
+
+
+
+
+
+
+
+
Update or append to a Redis string at a specific starting index
+
+
+
+
+
+
+
+
+ bool
+ setOption (int $option, mixed $value)
+
+
+
+
+
+
+
+
Set a configurable option on the Redis object.
+
+
+
+
+
+
+
+
+ Redis |bool
+ setex (string $key, int $expire, mixed $value)
+
+
+
+
+
+
+
+
Set a Redis STRING key with a specific expiration in seconds.
+
+
+
+
+
+
+
+
+ Redis|bool
+ setnx (string $key, mixed $value)
+
+
+
+
+
+
+
+
Set a key to a value, but only if that key does not already exist.
+
+
+
+
+
+
+
+
+ Redis|bool
+ sismember (string $key, mixed $value)
+
+
+
+
+
+
+
+
Check whether a given value is the member of a Redis SET.
+
+
+
+
+
+
+
+
+ Redis|bool
+ slaveof (string $host = NULL, int $port = 6379)
+ deprecated
+
+
+
+ deprecated
+
+
+
+
+
+
+
+
+
+
Turn a redis instance into a replica of another or promote a replica
+to a primary.
This method and the corresponding command in Redis has been marked deprecated
+and users should instead use Redis::replicaof() if connecting to redis-server
+
+= 5.0.0.
+
+
+
+
+
+
+
+
+
+ Redis|bool
+ replicaof (string $host = NULL, int $port = 6379)
+
+
+
+
+
+
+
+
Used to turn a Redis instance into a replica of another, or to remove
+replica status promoting the instance to a primary.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ touch (array|string $key_or_array, string ...$more_keys)
+
+
+
+
+
+
+
+
Update one or more keys last modified metadata.
+
+
+
+
+
+
+
+
+ mixed
+ slowlog (string $operation, int $length = 0)
+
+
+
+
+
+
+
+
Interact with Redis' slowlog functionality in various ways, depending
+on the value of 'operation'.
+
+
+
+
+
+
+
+
+ mixed
+ sort (string $key, array|null $options = null)
+
+
+
+
+
+
+
+
Sort the contents of a Redis key in various ways.
+
+
+
+
+
+
+
+
+ mixed
+ sort_ro (string $key, array|null $options = null)
+
+
+
+
+
+
+
+
This is simply a read-only variant of the sort command
+
+
+
+
+
+
+
+
+ array
+ sortAsc (string $key, string|null $pattern = null, mixed $get = null, int $offset = -1, int $count = -1, string|null $store = null)
+ deprecated
+
+
+
+ deprecated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ array
+ sortAscAlpha (string $key, string|null $pattern = null, mixed $get = null, int $offset = -1, int $count = -1, string|null $store = null)
+ deprecated
+
+
+
+ deprecated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ array
+ sortDesc (string $key, string|null $pattern = null, mixed $get = null, int $offset = -1, int $count = -1, string|null $store = null)
+ deprecated
+
+
+
+ deprecated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ array
+ sortDescAlpha (string $key, string|null $pattern = null, mixed $get = null, int $offset = -1, int $count = -1, string|null $store = null)
+ deprecated
+
+
+
+ deprecated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Redis|int|false
+ srem (string $key, mixed $value, mixed ...$other_values)
+
+
+
+
+
+
+
+
Remove one or more values from a Redis SET key.
+
+
+
+
+
+
+
+
+ array|false
+ sscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
+
+
+
+
+
+
Scan the members of a redis SET key.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ strlen (string $key)
+
+
+
+
+
+
+
+
Retrieve the length of a Redis STRING key.
+
+
+
+
+
+
+
+
+ bool
+ subscribe (array $channels, callable $cb)
+
+
+
+
+
+
+
+
Subscribe to one or more Redis pubsub channels.
+
+
+
+
+
+
+
+
+ Redis|bool
+ swapdb (int $src, int $dst)
+
+
+
+
+
+
+
+
Atomically swap two Redis databases so that all of the keys in the source database will
+now be in the destination database and vice-versa.
Note: This command simply swaps Redis' internal pointer to the database and is therefore
+very fast, regardless of the size of the underlying databases.
+
+
+
+
+
+
+
+
+ Redis|array
+ time ()
+
+
+
+
+
+
+
+
Retrieve the server time from the connected Redis instance.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ ttl (string $key)
+
+
+
+
+
+
+
+
Get the amount of time a Redis key has before it will expire, in seconds.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ type (string $key)
+
+
+
+
+
+
+
+
Get the type of a given Redis key.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ unlink (array|string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
Delete one or more keys from the Redis database. Unlike this operation, the actual
+deletion is asynchronous, meaning it is safe to delete large keys without fear of
+Redis blocking for a long period of time.
+
+
+
+
+
+
+
+
+ Redis|array|bool
+ unsubscribe (array $channels)
+
+
+
+
+
+
+
+
Unsubscribe from one or more subscribed channels.
+
+
+
+
+
+
+
+
+ Redis|bool
+ unwatch ()
+
+
+
+
+
+
+
+
Remove any previously WATCH'ed keys in a transaction.
+
+
+
+
+
+
+
+
+ bool|Redis
+ watch (array|string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
+ int|false
+ wait (int $numreplicas, int $timeout)
+
+
+
+
+
+
+
+
Block the client up to the provided timeout until a certain number of replicas have confirmed
+recieving them.
+
+
+
+
+
+
+
+
+ int|false
+ xack (string $key, string $group, array $ids)
+
+
+
+
+
+
+
+
+ Redis|string|false
+ xadd (string $key, string $id, array $values, int $maxlen = 0, bool $approx = false, bool $nomkstream = false)
+
+
+
+
+
+
+
+
Append a message to a stream.
+
+
+
+
+
+
+
+
+ Redis|bool|array
+ xautoclaim (string $key, string $group, string $consumer, int $min_idle, string $start, int $count = -1, bool $justid = false)
+
+
+
+
+
+
+
+
+ Redis|bool|array
+ xclaim (string $key, string $group, string $consumer, int $min_idle, array $ids, array $options)
+
+
+
+
+
+
+
+
+ Redis|int|false
+ xdel (string $key, array $ids)
+
+
+
+
+
+
+
+
Remove one or more specific IDs from a stream.
+
+
+
+
+
+
+
+
+ mixed
+ xgroup (string $operation, string $key = null, string $group = null, string $id_or_consumer = null, bool $mkstream = false, int $entries_read = -2)
+
+
+
+
+
+
+
+
XGROUP
Perform various operation on consumer groups for a particular Redis STREAM. What the command does
+is primarily based on which operation is passed.
+
+
+
+
+
+
+
+
+ mixed
+ xinfo (string $operation, string|null $arg1 = null, string|null $arg2 = null, int $count = -1)
+
+
+
+
+
+
+
+
Retrieve information about a stream key.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ xlen (string $key)
+
+
+
+
+
+
+
+
Get the number of messages in a Redis STREAM key.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ xpending (string $key, string $group, string|null $start = null, string|null $end = null, int $count = -1, string|null $consumer = null)
+
+
+
+
+
+
+
+
Interact with stream messages that have been consumed by a consumer group but not yet
+acknowledged with XACK.
+
+
+
+
+
+
+
+
+ Redis|array|bool
+ xrange (string $key, string $start, string $end, int $count = -1)
+
+
+
+
+
+
+
+
Get a range of entries from a STREAM key.
+
+
+
+
+
+
+
+
+ Redis|array|bool
+ xread (array $streams, int $count = -1, int $block = -1)
+
+
+
+
+
+
+
+
Consume one or more unconsumed elements in one or more streams.
+
+
+
+
+
+
+
+
+ Redis|array|bool
+ xreadgroup (string $group, string $consumer, array $streams, int $count = 1, int $block = 1)
+
+
+
+
+
+
+
+
Read one or more messages using a consumer group.
+
+
+
+
+
+
+
+
+ Redis|array|bool
+ xrevrange (string $key, string $end, string $start, int $count = -1)
+
+
+
+
+
+
+
+
Get a range of entries from a STREAM ke in reverse cronological order.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ xtrim (string $key, string $threshold, bool $approx = false, bool $minid = false, int $limit = -1)
+
+
+
+
+
+
+
+
Truncate a STREAM key in various ways.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zAdd (string $key, array|float $score_or_options, mixed ...$more_scores_and_mems)
+
+
+
+
+
+
+
+
Add one or more elements and scores to a Redis sorted set.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zCard (string $key)
+
+
+
+
+
+
+
+
Return the number of elements in a sorted set.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zCount (string $key, string $start, string $end)
+
+
+
+
+
+
+
+
Count the number of members in a sorted set with scores inside a provided range.
+
+
+
+
+
+
+
+
+ Redis|float|false
+ zIncrBy (string $key, float $value, mixed $member)
+
+
+
+
+
+
+
+
Create or increment the score of a member in a Redis sorted set
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zLexCount (string $key, string $min, string $max)
+
+
+
+
+
+
+
+
Count the number of elements in a sorted set whos members fall within the provided
+lexographical range.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zMscore (string $key, mixed $member, mixed ...$other_members)
+
+
+
+
+
+
+
+
Retrieve the score of one or more members in a sorted set.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zPopMax (string $key, int $count = null)
+
+
+
+
+
+
+
+
Pop one or more of the highest scoring elements from a sorted set.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zPopMin (string $key, int $count = null)
+
+
+
+
+
+
+
+
Pop one or more of the lowest scoring elements from a sorted set.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zRange (string $key, mixed $start, mixed $end, array|bool|null $options = null)
+
+
+
+
+
+
+
+
Retrieve a range of elements of a sorted set between a start and end point.
How the command works in particular is greatly affected by the options that
+are passed in.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zRangeByLex (string $key, string $min, string $max, int $offset = -1, int $count = -1)
+
+
+
+
+
+
+
+
Retrieve a range of elements from a sorted set by legographical range.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zRangeByScore (string $key, string $start, string $end, array $options = [])
+
+
+
+
+
+
+
+
Retrieve a range of members from a sorted set by their score.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zrangestore (string $dstkey, string $srckey, string $start, string $end, array|bool|null $options = NULL)
+
+
+
+
+
+
+
+
This command is similar to ZRANGE except that instead of returning the values directly
+it will store them in a destination key provided by the user
+
+
+
+
+
+
+
+
+ Redis|string|array
+ zRandMember (string $key, array $options = null)
+
+
+
+
+
+
+
+
Retrieve one or more random members from a Redis sorted set.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zRank (string $key, mixed $member)
+
+
+
+
+
+
+
+
Get the rank of a member of a sorted set, by score.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zRem (mixed $key, mixed $member, mixed ...$other_members)
+
+
+
+
+
+
+
+
Remove one or more members from a Redis sorted set.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zRemRangeByLex (string $key, string $min, string $max)
+
+
+
+
+
+
+
+
Remove zero or more elements from a Redis sorted set by legographical range.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zRemRangeByRank (string $key, int $start, int $end)
+
+
+
+
+
+
+
+
Remove one or more members of a sorted set by their rank.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zRemRangeByScore (string $key, string $start, string $end)
+
+
+
+
+
+
+
+
Remove one or more members of a sorted set by their score.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zRevRange (string $key, int $start, int $end, mixed $scores = null)
+
+
+
+
+
+
+
+
List the members of a Redis sorted set in reverse order
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zRevRangeByLex (string $key, string $max, string $min, int $offset = -1, int $count = -1)
+
+
+
+
+
+
+
+
List members of a Redis sorted set within a legographical range, in reverse order.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zRevRangeByScore (string $key, string $max, string $min, array|bool $options = [])
+
+
+
+
+
+
+
+
List elements from a Redis sorted set by score, highest to lowest
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zRevRank (string $key, mixed $member)
+
+
+
+
+
+
+
+
Retrieve a member of a sorted set by reverse rank.
+
+
+
+
+
+
+
+
+ Redis|float|false
+ zScore (string $key, mixed $member)
+
+
+
+
+
+
+
+
Get the score of a member of a sorted set.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zdiff (array $keys, array $options = null)
+
+
+
+
+
+
+
+
Given one or more sorted set key names, return every element that is in the first
+set but not any of the others.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zdiffstore (string $dst, array $keys)
+
+
+
+
+
+
+
+
Store the difference of one or more sorted sets in a destination sorted set.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zinter (array $keys, array|null $weights = null, array|null $options = null)
+
+
+
+
+
+
+
+
Compute the intersection of one or more sorted sets and return the members
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zintercard (array $keys, int $limit = -1)
+
+
+
+
+
+
+
+
Similar to ZINTER but instead of returning the intersected values, this command returns the
+cardinality of the intersected set.
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zinterstore (string $dst, array $keys, array|null $weights = null, string|null $aggregate = null)
+
+
+
+
+
+
+
+
Compute the intersection of one ore more sorted sets storing the result in a new sorted set.
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
+
+
+
+
+
+
Scan the members of a sorted set incrementally, using a cursor
+
+
+
+
+
+
+
+
+ Redis|array|false
+ zunion (array $keys, array|null $weights = null, array|null $options = null)
+
+
+
+
+
+
+
+
Retrieve the union of one or more sorted sets
+
+
+
+
+
+
+
+
+ Redis|int|false
+ zunionstore (string $dst, array $keys, array|null $weights = NULL, string|null $aggregate = NULL)
+
+
+
+
+
+
+
+
Perform a union on one or more Redis sets and store the result in a destination sorted set.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/RedisArray.html b/docs/RedisArray.html
new file mode 100644
index 0000000..43becf9
--- /dev/null
+++ b/docs/RedisArray.html
@@ -0,0 +1,1739 @@
+
+
+
+
+
+ RedisArray | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
class
+ RedisArray (View source )
+
+
+
+
+
+
+
+
+
+
+
Methods
+
+
+
+
+ mixed
+
+
+
__call (string $function_name, array $arguments)
+
+
No description
+
+
+
+
+
+
+
+
+
__construct (string|array $name_or_hosts, array $options = NULL)
+
+
No description
+
+
+
+
+
+
+ bool|callable
+
+
+
+
+
+
+ bool|callable
+
+
+
+
+
+
+ bool|array
+
+
+
_hosts ()
+
+
No description
+
+
+
+
+
+ bool|null|Redis
+
+
+
_instance (string $host)
+
+
No description
+
+
+
+
+
+ bool|null
+
+
+
_rehash (callable $fn = NULL)
+
+
No description
+
+
+
+
+
+ bool|string|null
+
+
+
_target (string $key)
+
+
No description
+
+
+
+
+
+ array
+
+
+
bgsave ()
+
+
No description
+
+
+
+
+
+ bool|int
+
+
+
del (string|array $key, string ...$otherkeys)
+
+
No description
+
+
+
+
+
+
+ bool|null
+
+
+
exec ()
+
+
No description
+
+
+
+
+
+
+
+
+ bool|array
+
+
+
hscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
No description
+
+
+
+
+
+ bool|array
+
+
+
info ()
+
+
No description
+
+
+
+
+
+ bool|array
+
+
+
keys (string $pattern)
+
+
No description
+
+
+
+
+
+ bool|array
+
+
+
mget (array $keys)
+
+
No description
+
+
+
+
+
+ bool
+
+
+
mset (array $pairs)
+
+
No description
+
+
+
+
+
+ bool|RedisArray
+
+
+
multi (string $host, int $mode = NULL)
+
+
No description
+
+
+
+
+
+ bool|array
+
+
+
ping ()
+
+
No description
+
+
+
+
+
+ bool|array
+
+
+
save ()
+
+
No description
+
+
+
+
+
+ bool|array
+
+
+
scan (int|null $iterator, string $node, string|null $pattern = null, int $count = 0)
+
+
No description
+
+
+
+
+
+ bool|array
+
+
+
select (int $index)
+
+
No description
+
+
+
+
+
+ bool|array
+
+
+
setOption (int $opt, string $value)
+
+
No description
+
+
+
+
+
+ bool|array
+
+
+
sscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
No description
+
+
+
+
+
+ bool|int
+
+
+
unlink (string|array $key, string ...$otherkeys)
+
+
No description
+
+
+
+
+
+
+ bool|array
+
+
+
zscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
No description
+
+
+
+
+
+
+
Details
+
+
+
+
+
+ mixed
+ __call (string $function_name, array $arguments)
+
+
+
+
+
+
+
+
+
+ __construct (string|array $name_or_hosts, array $options = NULL)
+
+
+
+
+
+
+
+
+ bool|array
+ _continuum ()
+
+
+
+
+
+
+
+
+ bool|callable
+ _distributor ()
+
+
+
+
+
+
+
+
+ bool|callable
+ _function ()
+
+
+
+
+
+
+
+
+ bool|array
+ _hosts ()
+
+
+
+
+
+
+
+
+ bool|null|Redis
+ _instance (string $host)
+
+
+
+
+
+
+
+
+ bool|null
+ _rehash (callable $fn = NULL)
+
+
+
+
+
+
+
+
+ bool|string|null
+ _target (string $key)
+
+
+
+
+
+
+
+
+ array
+ bgsave ()
+
+
+
+
+
+
+
+
+ bool|int
+ del (string|array $key, string ...$otherkeys)
+
+
+
+
+
+
+
+
+ bool|null
+ discard ()
+
+
+
+
+
+
+
+
+ bool|null
+ exec ()
+
+
+
+
+
+
+
+
+ bool|array
+ flushall ()
+
+
+
+
+
+
+
+
+ bool|array
+ flushdb ()
+
+
+
+
+
+
+
+
+ bool|array
+ getOption (int $opt)
+
+
+
+
+
+
+
+
+ bool|array
+ hscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
+
+
+
+
+
+
+ bool|array
+ info ()
+
+
+
+
+
+
+
+
+ bool|array
+ keys (string $pattern)
+
+
+
+
+
+
+
+
+ bool|array
+ mget (array $keys)
+
+
+
+
+
+
+
+
+ bool
+ mset (array $pairs)
+
+
+
+
+
+
+
+
+ bool|RedisArray
+ multi (string $host, int $mode = NULL)
+
+
+
+
+
+
+
+
+ bool|array
+ ping ()
+
+
+
+
+
+
+
+
+ bool|array
+ save ()
+
+
+
+
+
+
+
+
+ bool|array
+ scan (int|null $iterator, string $node, string|null $pattern = null, int $count = 0)
+
+
+
+
+
+
+
+
+ bool|array
+ select (int $index)
+
+
+
+
+
+
+
+
+ bool|array
+ setOption (int $opt, string $value)
+
+
+
+
+
+
+
+
+ bool|array
+ sscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
+
+
+
+
+
+
+ bool|int
+ unlink (string|array $key, string ...$otherkeys)
+
+
+
+
+
+
+
+
+ bool|null
+ unwatch ()
+
+
+
+
+
+
+
+
+ bool|array
+ zscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/RedisCluster.html b/docs/RedisCluster.html
new file mode 100644
index 0000000..7894808
--- /dev/null
+++ b/docs/RedisCluster.html
@@ -0,0 +1,14846 @@
+
+
+
+
+
+ RedisCluster | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
class
+ RedisCluster (View source )
+
+
+
+
+
+
+
+
+
+
+
Methods
+
+
+
+
+
+
+
+
__construct (string|null $name, array $seeds = NULL, int|float $timeout = 0, int|float $read_timeout = 0, bool $persistent = false, mixed $auth = NULL, array $context = NULL)
+
+
No description
+
+
+
+
+
+ string
+
+
+
_compress (string $value)
+
+
No description
+
+
+
+
+
+
+
+
+ string
+
+
+
_pack (mixed $value)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
_unpack (string $value)
+
+
No description
+
+
+
+
+
+ bool|string
+
+
+
_prefix (string $key)
+
+
No description
+
+
+
+
+
+
+ string|null
+
+
+
_redir ()
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
acl (string|array $key_or_address, string $subcmd, string ...$args)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|int
+
+
+
append (string $key, mixed $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
bgrewriteaof (string|array $key_or_address)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
bgsave (string|array $key_or_address)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|int
+
+
+
bitcount (string $key, int $start = 0, int $end = -1, bool $bybit = false)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|int
+
+
+
bitop (string $operation, string $deskey, string $srckey, string ...$otherkeys)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
bitpos (string $key, bool $bit, int $start = 0, int $end = -1, bool $bybit = false)
+
+
Return the position of the first bit set to 0 or 1 in a string.
+
+
+
+
+ RedisCluster|array|null|false
+
+
+
blpop (string|array $key, string|float|int $timeout_or_key, mixed ...$extra_args)
+
+
See Redis::blpop()
+
+
+
+
+ RedisCluster|array|null|false
+
+
+
brpop (string|array $key, string|float|int $timeout_or_key, mixed ...$extra_args)
+
+
See Redis::brpop()
+
+
+
+
+ mixed
+
+
+
brpoplpush (string $srckey, string $deskey, int $timeout)
+
+
See Redis::brpoplpush()
+
+
+
+
+ array
+
+
+
bzpopmax (string|array $key, string|int $timeout_or_key, mixed ...$extra_args)
+
+
No description
+
+
+
+
+
+ array
+
+
+
bzpopmin (string|array $key, string|int $timeout_or_key, mixed ...$extra_args)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|null|false
+
+
+
bzmpop (float $timeout, array $keys, string $from, int $count = 1)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|null|false
+
+
+
zmpop (array $keys, string $from, int $count = 1)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|null|false
+
+
+
blmpop (float $timeout, array $keys, string $from, int $count = 1)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|null|false
+
+
+
lmpop (array $keys, string $from, int $count = 1)
+
+
No description
+
+
+
+
+
+
+ array|string|bool
+
+
+
client (string|array $key_or_address, string $subcommand, string|null $arg = NULL)
+
+
No description
+
+
+
+
+
+ bool
+
+
+
close ()
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
cluster (string|array $key_or_address, string $command, mixed ...$extra_args)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
command (mixed ...$extra_args)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
config (string|array $key_or_address, string $subcommand, mixed ...$extra_args)
+
+
No description
+
+
+
+
+
+ RedisCluster|int
+
+
+
dbsize (string|array $key_or_address)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
decr (string $key, int $by = 1)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
decrby (string $key, int $value)
+
+
No description
+
+
+
+
+
+ float
+
+
+
decrbyfloat (string $key, float $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
del (array|string $key, string ...$other_keys)
+
+
No description
+
+
+
+
+
+
+ RedisCluster|string|false
+
+
+
dump (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|string|false
+
+
+
echo (string|array $key_or_address, string $msg)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
eval (string $script, array $args = [], int $num_keys = 0)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
eval_ro (string $script, array $args = [], int $num_keys = 0)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
evalsha (string $script_sha, array $args = [], int $num_keys = 0)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
evalsha_ro (string $script_sha, array $args = [], int $num_keys = 0)
+
+
No description
+
+
+
+
+
+ array|false
+
+
+
exec ()
+
+
No description
+
+
+
+
+
+ RedisCluster|int|bool
+
+
+
exists (mixed $key, mixed ...$other_keys)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|bool
+
+
+
touch (mixed $key, mixed ...$other_keys)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
expire (string $key, int $timeout, string|null $mode = NULL)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
expireat (string $key, int $timestamp, string|null $mode = NULL)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
+
+
+
+ RedisCluster|bool
+
+
+
flushall (string|array $key_or_address, bool $async = false)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
flushdb (string|array $key_or_address, bool $async = false)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
geoadd (string $key, float $lng, float $lat, string $member, mixed ...$other_triples_and_options)
+
+
No description
+
+
+
+
+
+ RedisCluster|float|false
+
+
+
geodist (string $key, string $src, string $dest, string|null $unit = null)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
geohash (string $key, string $member, string ...$other_members)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
geopos (string $key, string $member, string ...$other_members)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
georadius (string $key, float $lng, float $lat, float $radius, string $unit, array $options = [])
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
georadius_ro (string $key, float $lng, float $lat, float $radius, string $unit, array $options = [])
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
georadiusbymember (string $key, string $member, float $radius, string $unit, array $options = [])
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
georadiusbymember_ro (string $key, string $member, float $radius, string $unit, array $options = [])
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
get (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
getbit (string $key, int $value)
+
+
No description
+
+
+
+
+
+
+
+ mixed
+
+
+
getoption (int $option)
+
+
No description
+
+
+
+
+
+ RedisCluster|string|false
+
+
+
getrange (string $key, int $start, int $end)
+
+
No description
+
+
+
+
+
+ RedisCluster|string|array|int|false
+
+
+
lcs (string $key1, string $key2, array|null $options = NULL)
+
+
No description
+
+
+
+
+
+ RedisCluster|string|bool
+
+
+
getset (string $key, mixed $value)
+
+
No description
+
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
hdel (string $key, string $member, string ...$other_members)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
hexists (string $key, string $member)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
hget (string $key, string $member)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
hgetall (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
hincrby (string $key, string $member, int $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|float|false
+
+
+
hincrbyfloat (string $key, string $member, float $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
hkeys (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
hlen (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
hmget (string $key, array $keys)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
hmset (string $key, array $key_values)
+
+
No description
+
+
+
+
+
+ array|bool
+
+
+
hscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
hset (string $key, string $member, mixed $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
hsetnx (string $key, string $member, mixed $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
hstrlen (string $key, string $field)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
hvals (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
incr (string $key, int $by = 1)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
incrby (string $key, int $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|float|false
+
+
+
incrbyfloat (string $key, float $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
info (string|array $key_or_address, string ...$sections)
+
+
Retrieve information about the connected redis-server. If no arguments are passed to
+this function, redis will return every info field. Alternatively you may pass a specific
+section you want returned (e.g. 'server', or 'memory') to receive only information pertaining
+to that section.
+
+
+
+
+ RedisCluster|array|false
+
+
+
keys (string $pattern)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
lastsave (string|array $key_or_address)
+
+
No description
+
+
+
+
+
+ RedisCluster|string|bool
+
+
+
lget (string $key, int $index)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
lindex (string $key, int $index)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
linsert (string $key, string $pos, mixed $pivot, mixed $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|bool
+
+
+
llen (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|string|array
+
+
+
lpop (string $key, int $count = 0)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|bool
+
+
+
lpush (string $key, mixed $value, mixed ...$other_values)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|bool
+
+
+
lpushx (string $key, mixed $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
lrange (string $key, int $start, int $end)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|bool
+
+
+
lrem (string $key, mixed $value, int $count = 0)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
lset (string $key, int $index, mixed $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
ltrim (string $key, int $start, int $end)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
mget (array $keys)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
mset (array $key_values)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
msetnx (array $key_values)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
multi (int $value = Redis::MULTI)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|string|false
+
+
+
object (string $subcommand, string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
persist (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
pexpire (string $key, int $timeout, string|null $mode = NULL)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
pexpireat (string $key, int $timestamp, string|null $mode = NULL)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
pfadd (string $key, array $elements)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
pfcount (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
pfmerge (string $key, array $keys)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
ping (string|array $key_or_address, string|null $message = NULL)
+
+
PING an instance in the redis cluster.
+
+
+
+
+ RedisCluster|bool
+
+
+
psetex (string $key, int $timeout, string $value)
+
+
No description
+
+
+
+
+
+ void
+
+
+
psubscribe (array $patterns, callable $callback)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
pttl (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
publish (string $channel, string $message)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
pubsub (string|array $key_or_address, string ...$values)
+
+
No description
+
+
+
+
+
+ bool|array
+
+
+
punsubscribe (string $pattern, string ...$other_patterns)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|string
+
+
+
randomkey (string|array $key_or_address)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
rawcommand (string|array $key_or_address, string $command, mixed ...$args)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
rename (string $key_src, string $key_dst)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
renamenx (string $key, string $newkey)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
restore (string $key, int $timeout, string $value, array|null $options = NULL)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
role (string|array $key_or_address)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|string|array
+
+
+
rpop (string $key, int $count = 0)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|string
+
+
+
rpoplpush (string $src, string $dst)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
rpush (string $key, mixed ...$elements)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|int
+
+
+
rpushx (string $key, string $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
sadd (string $key, mixed $value, mixed ...$other_values)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|int
+
+
+
saddarray (string $key, array $values)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
save (string|array $key_or_address)
+
+
No description
+
+
+
+
+
+ bool|array
+
+
+
scan (int|null $iterator, string|array $key_or_address, string|null $pattern = null, int $count = 0)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
scard (string $key)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
script (string|array $key_or_address, mixed ...$args)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
sdiff (string $key, string ...$other_keys)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
sdiffstore (string $dst, string $key, string ...$other_keys)
+
+
No description
+
+
+
+
+
+ RedisCluster|string|bool
+
+
+
set (string $key, mixed $value, mixed $options = NULL)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
setbit (string $key, int $offset, bool $onoff)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
setex (string $key, int $expire, mixed $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
setnx (string $key, mixed $value)
+
+
No description
+
+
+
+
+
+ bool
+
+
+
setoption (int $option, mixed $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
setrange (string $key, int $offset, string $value)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
sinter (array|string $key, string ...$other_keys)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
sintercard (array $keys, int $limit = -1)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
sinterstore (array|string $key, string ...$other_keys)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
sismember (string $key, mixed $value)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
slowlog (string|array $key_or_address, mixed ...$args)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
smembers (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool
+
+
+
smove (string $src, string $dst, string $member)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|bool|int|string
+
+
+
sort (string $key, array|null $options = NULL)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|bool|int|string
+
+
+
sort_ro (string $key, array|null $options = NULL)
+
+
No description
+
+
+
+
+
+ RedisCluster|string|array|false
+
+
+
spop (string $key, int $count = 0)
+
+
No description
+
+
+
+
+
+ RedisCluster|string|array|false
+
+
+
srandmember (string $key, int $count = 0)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
srem (string $key, mixed $value, mixed ...$other_values)
+
+
No description
+
+
+
+
+
+ array|false
+
+
+
sscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
strlen (string $key)
+
+
No description
+
+
+
+
+
+ void
+
+
+
subscribe (array $channels, callable $cb)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
sunion (string $key, string ...$other_keys)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
sunionstore (string $dst, string $key, string ...$other_keys)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
time (string|array $key_or_address)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
ttl (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
type (string $key)
+
+
No description
+
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
unlink (array|string $key, string ...$other_keys)
+
+
No description
+
+
+
+
+
+
+ RedisCluster|bool
+
+
+
watch (string $key, string ...$other_keys)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
xack (string $key, string $group, array $ids)
+
+
No description
+
+
+
+
+
+ RedisCluster|string|false
+
+
+
xadd (string $key, string $id, array $values, int $maxlen = 0, bool $approx = false)
+
+
No description
+
+
+
+
+
+ RedisCluster|string|array|false
+
+
+
xclaim (string $key, string $group, string $consumer, int $min_iddle, array $ids, array $options)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
xdel (string $key, array $ids)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
xgroup (string $operation, string $key = null, string $arg1 = null, string $arg2 = null, bool $arg3 = false)
+
+
No description
+
+
+
+
+
+ mixed
+
+
+
xinfo (string $operation, string|null $arg1 = null, string|null $arg2 = null, int $count = -1)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
xlen (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
xpending (string $key, string $group, string|null $start = null, string|null $end = null, int $count = -1, string|null $consumer = null)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
xrange (string $key, string $start, string $end, int $count = -1)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
xread (array $streams, int $count = -1, int $block = -1)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
xreadgroup (string $group, string $consumer, array $streams, int $count = 1, int $block = 1)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
xrevrange (string $key, string $start, string $end, int $count = -1)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
xtrim (string $key, int $maxlen, bool $approx = false, bool $minid = false, int $limit = -1)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zadd (string $key, array|float $score_or_options, mixed ...$more_scores_and_mems)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zcard (string $key)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zcount (string $key, string $start, string $end)
+
+
No description
+
+
+
+
+
+ RedisCluster|float|false
+
+
+
zincrby (string $key, float $value, string $member)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zinterstore (string $dst, array $keys, array|null $weights = null, string|null $aggregate = null)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zintercard (array $keys, int $limit = -1)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zlexcount (string $key, string $min, string $max)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
zpopmax (string $key, int $value = null)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
zpopmin (string $key, int $value = null)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|bool
+
+
+
zrange (string $key, mixed $start, mixed $end, array|bool|null $options = null)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zrangestore (string $dstkey, string $srckey, int $start, int $end, array|bool|null $options = null)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
zrangebylex (string $key, string $min, string $max, int $offset = -1, int $count = -1)
+
+
No description
+
+
+
+
+
+ RedisCluster|array|false
+
+
+
zrangebyscore (string $key, string $start, string $end, array $options = [])
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zrank (string $key, mixed $member)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zrem (string $key, string $value, string ...$other_values)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zremrangebylex (string $key, string $min, string $max)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zremrangebyrank (string $key, string $min, string $max)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
zrevrange (string $key, string $min, string $max, array $options = null)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
zrevrangebylex (string $key, string $min, string $max, array $options = null)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
zrevrangebyscore (string $key, string $min, string $max, array $options = null)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zrevrank (string $key, mixed $member)
+
+
No description
+
+
+
+
+
+ RedisCluster|bool|array
+
+
+
zscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
No description
+
+
+
+
+
+ RedisCluster|float|false
+
+
+
zscore (string $key, mixed $member)
+
+
No description
+
+
+
+
+
+ RedisCluster|int|false
+
+
+
zunionstore (string $dst, array $keys, array|null $weights = NULL, string|null $aggregate = NULL)
+
+
No description
+
+
+
+
+
+
+
Details
+
+
+
+
+
+
+ __construct (string|null $name, array $seeds = NULL, int|float $timeout = 0, int|float $read_timeout = 0, bool $persistent = false, mixed $auth = NULL, array $context = NULL)
+
+
+
+
+
+
+
+
+ string
+ _compress (string $value)
+
+
+
+
+
+
+
+
+ string
+ _uncompress (string $value)
+
+
+
+
+
+
+
+
+ bool|string
+ _serialize (mixed $value)
+
+
+
+
+
+
+
+
+ mixed
+ _unserialize (string $value)
+
+
+
+
+
+
+
+
+ string
+ _pack (mixed $value)
+
+
+
+
+
+
+
+
+ mixed
+ _unpack (string $value)
+
+
+
+
+
+
+
+
+ bool|string
+ _prefix (string $key)
+
+
+
+
+
+
+
+
+ array
+ _masters ()
+
+
+
+
+
+
+
+
+ string|null
+ _redir ()
+
+
+
+
+
+
+
+
+ mixed
+ acl (string|array $key_or_address, string $subcmd, string ...$args)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|int
+ append (string $key, mixed $value)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ bgrewriteaof (string|array $key_or_address)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ bgsave (string|array $key_or_address)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|int
+ bitcount (string $key, int $start = 0, int $end = -1, bool $bybit = false)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|int
+ bitop (string $operation, string $deskey, string $srckey, string ...$otherkeys)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ bitpos (string $key, bool $bit, int $start = 0, int $end = -1, bool $bybit = false)
+
+
+
+
+
+
+
+
Return the position of the first bit set to 0 or 1 in a string.
+
+
+
+
+
+
+
+
+ RedisCluster|array|null|false
+ blpop (string|array $key, string|float|int $timeout_or_key, mixed ...$extra_args)
+
+
+
+
+
+
+
+
+ RedisCluster|array|null|false
+ brpop (string|array $key, string|float|int $timeout_or_key, mixed ...$extra_args)
+
+
+
+
+
+
+
+
+ mixed
+ brpoplpush (string $srckey, string $deskey, int $timeout)
+
+
+
+
+
+
+
+
See Redis::brpoplpush()
+
+
+
+
+
+
+
+
+ array
+ bzpopmax (string|array $key, string|int $timeout_or_key, mixed ...$extra_args)
+
+
+
+
+
+
+
+
+ array
+ bzpopmin (string|array $key, string|int $timeout_or_key, mixed ...$extra_args)
+
+
+
+
+
+
+
+
+ RedisCluster|array|null|false
+ bzmpop (float $timeout, array $keys, string $from, int $count = 1)
+
+
+
+
+
+
+
+
+ RedisCluster|array|null|false
+ zmpop (array $keys, string $from, int $count = 1)
+
+
+
+
+
+
+
+
+ RedisCluster|array|null|false
+ blmpop (float $timeout, array $keys, string $from, int $count = 1)
+
+
+
+
+
+
+
+
+ RedisCluster|array|null|false
+ lmpop (array $keys, string $from, int $count = 1)
+
+
+
+
+
+
+
+
+ bool
+ clearlasterror ()
+
+
+
+
+
+
+
+
+ array|string|bool
+ client (string|array $key_or_address, string $subcommand, string|null $arg = NULL)
+
+
+
+
+
+
+
+
+ bool
+ close ()
+
+
+
+
+
+
+
+
+ mixed
+ cluster (string|array $key_or_address, string $command, mixed ...$extra_args)
+
+
+
+
+
+
+
+
+ mixed
+ command (mixed ...$extra_args)
+
+
+
+
+
+
+
+
+ mixed
+ config (string|array $key_or_address, string $subcommand, mixed ...$extra_args)
+
+
+
+
+
+
+
+
+ RedisCluster|int
+ dbsize (string|array $key_or_address)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ decr (string $key, int $by = 1)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ decrby (string $key, int $value)
+
+
+
+
+
+
+
+
+ float
+ decrbyfloat (string $key, float $value)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ del (array|string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
+ bool
+ discard ()
+
+
+
+
+
+
+
+
+ RedisCluster|string|false
+ dump (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|string|false
+ echo (string|array $key_or_address, string $msg)
+
+
+
+
+
+
+
+
+ mixed
+ eval (string $script, array $args = [], int $num_keys = 0)
+
+
+
+
+
+
+
+
+ mixed
+ eval_ro (string $script, array $args = [], int $num_keys = 0)
+
+
+
+
+
+
+
+
+ mixed
+ evalsha (string $script_sha, array $args = [], int $num_keys = 0)
+
+
+
+
+
+
+
+
+ mixed
+ evalsha_ro (string $script_sha, array $args = [], int $num_keys = 0)
+
+
+
+
+
+
+
+
+ array|false
+ exec ()
+
+
+
+
+
+
+
+
+ RedisCluster|int|bool
+ exists (mixed $key, mixed ...$other_keys)
+
+
+
+
+
+
+
+
+ RedisCluster|int|bool
+ touch (mixed $key, mixed ...$other_keys)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ expire (string $key, int $timeout, string|null $mode = NULL)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ expireat (string $key, int $timestamp, string|null $mode = NULL)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ expiretime (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ pexpiretime (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ flushall (string|array $key_or_address, bool $async = false)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ flushdb (string|array $key_or_address, bool $async = false)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ geoadd (string $key, float $lng, float $lat, string $member, mixed ...$other_triples_and_options)
+
+
+
+
+
+
+
+
+ RedisCluster|float|false
+ geodist (string $key, string $src, string $dest, string|null $unit = null)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ geohash (string $key, string $member, string ...$other_members)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ geopos (string $key, string $member, string ...$other_members)
+
+
+
+
+
+
+
+
+ mixed
+ georadius (string $key, float $lng, float $lat, float $radius, string $unit, array $options = [])
+
+
+
+
+
+
+
+
+ mixed
+ georadius_ro (string $key, float $lng, float $lat, float $radius, string $unit, array $options = [])
+
+
+
+
+
+
+
+
+ mixed
+ georadiusbymember (string $key, string $member, float $radius, string $unit, array $options = [])
+
+
+
+
+
+
+
+
+ mixed
+ georadiusbymember_ro (string $key, string $member, float $radius, string $unit, array $options = [])
+
+
+
+
+
+
+
+
+ mixed
+ get (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ getbit (string $key, int $value)
+
+
+
+
+
+
+
+
+ string|null
+ getlasterror ()
+
+
+
+
+
+
+
+
+ int
+ getmode ()
+
+
+
+
+
+
+
+
+ mixed
+ getoption (int $option)
+
+
+
+
+
+
+
+
+ RedisCluster|string|false
+ getrange (string $key, int $start, int $end)
+
+
+
+
+
+
+
+
+ RedisCluster|string|array|int|false
+ lcs (string $key1, string $key2, array|null $options = NULL)
+
+
+
+
+
+
+
+
+ RedisCluster|string|bool
+ getset (string $key, mixed $value)
+
+
+
+
+
+
+
+
+ int|false
+ gettransferredbytes ()
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ hdel (string $key, string $member, string ...$other_members)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ hexists (string $key, string $member)
+
+
+
+
+
+
+
+
+ mixed
+ hget (string $key, string $member)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ hgetall (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ hincrby (string $key, string $member, int $value)
+
+
+
+
+
+
+
+
+ RedisCluster|float|false
+ hincrbyfloat (string $key, string $member, float $value)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ hkeys (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ hlen (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ hmget (string $key, array $keys)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ hmset (string $key, array $key_values)
+
+
+
+
+
+
+
+
+ array|bool
+ hscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ hset (string $key, string $member, mixed $value)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ hsetnx (string $key, string $member, mixed $value)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ hstrlen (string $key, string $field)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ hvals (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ incr (string $key, int $by = 1)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ incrby (string $key, int $value)
+
+
+
+
+
+
+
+
+ RedisCluster|float|false
+ incrbyfloat (string $key, float $value)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ info (string|array $key_or_address, string ...$sections)
+
+
+
+
+
+
+
+
Retrieve information about the connected redis-server. If no arguments are passed to
+this function, redis will return every info field. Alternatively you may pass a specific
+section you want returned (e.g. 'server', or 'memory') to receive only information pertaining
+to that section.
If connected to Redis server >= 7.0.0 you may pass multiple optional sections.
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ keys (string $pattern)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ lastsave (string|array $key_or_address)
+
+
+
+
+
+
+
+
+ RedisCluster|string|bool
+ lget (string $key, int $index)
+
+
+
+
+
+
+
+
+ mixed
+ lindex (string $key, int $index)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ linsert (string $key, string $pos, mixed $pivot, mixed $value)
+
+
+
+
+
+
+
+
+ RedisCluster|int|bool
+ llen (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|string|array
+ lpop (string $key, int $count = 0)
+
+
+
+
+
+
+
+
+ RedisCluster|int|bool
+ lpush (string $key, mixed $value, mixed ...$other_values)
+
+
+
+
+
+
+
+
+ RedisCluster|int|bool
+ lpushx (string $key, mixed $value)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ lrange (string $key, int $start, int $end)
+
+
+
+
+
+
+
+
+ RedisCluster|int|bool
+ lrem (string $key, mixed $value, int $count = 0)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ lset (string $key, int $index, mixed $value)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ ltrim (string $key, int $start, int $end)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ mget (array $keys)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ mset (array $key_values)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ msetnx (array $key_values)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ multi (int $value = Redis::MULTI)
+
+
+
+
+
+
+
+
+ RedisCluster|int|string|false
+ object (string $subcommand, string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ persist (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ pexpire (string $key, int $timeout, string|null $mode = NULL)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ pexpireat (string $key, int $timestamp, string|null $mode = NULL)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ pfadd (string $key, array $elements)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ pfcount (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ pfmerge (string $key, array $keys)
+
+
+
+
+
+
+
+
+ mixed
+ ping (string|array $key_or_address, string|null $message = NULL)
+
+
+
+
+
+
+
+
PING an instance in the redis cluster.
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ psetex (string $key, int $timeout, string $value)
+
+
+
+
+
+
+
+
+ void
+ psubscribe (array $patterns, callable $callback)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ pttl (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ publish (string $channel, string $message)
+
+
+
+
+
+
+
+
+ mixed
+ pubsub (string|array $key_or_address, string ...$values)
+
+
+
+
+
+
+
+
+ bool|array
+ punsubscribe (string $pattern, string ...$other_patterns)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|string
+ randomkey (string|array $key_or_address)
+
+
+
+
+
+
+
+
+ mixed
+ rawcommand (string|array $key_or_address, string $command, mixed ...$args)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ rename (string $key_src, string $key_dst)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ renamenx (string $key, string $newkey)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ restore (string $key, int $timeout, string $value, array|null $options = NULL)
+
+
+
+
+
+
+
+
+ mixed
+ role (string|array $key_or_address)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|string|array
+ rpop (string $key, int $count = 0)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|string
+ rpoplpush (string $src, string $dst)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ rpush (string $key, mixed ...$elements)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|int
+ rpushx (string $key, string $value)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ sadd (string $key, mixed $value, mixed ...$other_values)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|int
+ saddarray (string $key, array $values)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ save (string|array $key_or_address)
+
+
+
+
+
+
+
+
+ bool|array
+ scan (int|null $iterator, string|array $key_or_address, string|null $pattern = null, int $count = 0)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ scard (string $key)
+
+
+
+
+
+
+
+
+ mixed
+ script (string|array $key_or_address, mixed ...$args)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ sdiff (string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ sdiffstore (string $dst, string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
+ RedisCluster|string|bool
+ set (string $key, mixed $value, mixed $options = NULL)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ setbit (string $key, int $offset, bool $onoff)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ setex (string $key, int $expire, mixed $value)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ setnx (string $key, mixed $value)
+
+
+
+
+
+
+
+
+ bool
+ setoption (int $option, mixed $value)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ setrange (string $key, int $offset, string $value)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ sinter (array|string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ sintercard (array $keys, int $limit = -1)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ sinterstore (array|string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ sismember (string $key, mixed $value)
+
+
+
+
+
+
+
+
+ mixed
+ slowlog (string|array $key_or_address, mixed ...$args)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ smembers (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ smove (string $src, string $dst, string $member)
+
+
+
+
+
+
+
+
+ RedisCluster|array|bool|int|string
+ sort (string $key, array|null $options = NULL)
+
+
+
+
+
+
+
+
+ RedisCluster|array|bool|int|string
+ sort_ro (string $key, array|null $options = NULL)
+
+
+
+
+
+
+
+
+ RedisCluster|string|array|false
+ spop (string $key, int $count = 0)
+
+
+
+
+
+
+
+
+ RedisCluster|string|array|false
+ srandmember (string $key, int $count = 0)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ srem (string $key, mixed $value, mixed ...$other_values)
+
+
+
+
+
+
+
+
+ array|false
+ sscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ strlen (string $key)
+
+
+
+
+
+
+
+
+ void
+ subscribe (array $channels, callable $cb)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ sunion (string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ sunionstore (string $dst, string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ time (string|array $key_or_address)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ ttl (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ type (string $key)
+
+
+
+
+
+
+
+
+ bool|array
+ unsubscribe (array $channels)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ unlink (array|string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
+ bool
+ unwatch ()
+
+
+
+
+
+
+
+
+ RedisCluster|bool
+ watch (string $key, string ...$other_keys)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ xack (string $key, string $group, array $ids)
+
+
+
+
+
+
+
+
+ RedisCluster|string|false
+ xadd (string $key, string $id, array $values, int $maxlen = 0, bool $approx = false)
+
+
+
+
+
+
+
+
+ RedisCluster|string|array|false
+ xclaim (string $key, string $group, string $consumer, int $min_iddle, array $ids, array $options)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ xdel (string $key, array $ids)
+
+
+
+
+
+
+
+
+ mixed
+ xgroup (string $operation, string $key = null, string $arg1 = null, string $arg2 = null, bool $arg3 = false)
+
+
+
+
+
+
+
+
+ mixed
+ xinfo (string $operation, string|null $arg1 = null, string|null $arg2 = null, int $count = -1)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ xlen (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ xpending (string $key, string $group, string|null $start = null, string|null $end = null, int $count = -1, string|null $consumer = null)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ xrange (string $key, string $start, string $end, int $count = -1)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ xread (array $streams, int $count = -1, int $block = -1)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ xreadgroup (string $group, string $consumer, array $streams, int $count = 1, int $block = 1)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ xrevrange (string $key, string $start, string $end, int $count = -1)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ xtrim (string $key, int $maxlen, bool $approx = false, bool $minid = false, int $limit = -1)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zadd (string $key, array|float $score_or_options, mixed ...$more_scores_and_mems)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zcard (string $key)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zcount (string $key, string $start, string $end)
+
+
+
+
+
+
+
+
+ RedisCluster|float|false
+ zincrby (string $key, float $value, string $member)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zinterstore (string $dst, array $keys, array|null $weights = null, string|null $aggregate = null)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zintercard (array $keys, int $limit = -1)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zlexcount (string $key, string $min, string $max)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ zpopmax (string $key, int $value = null)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ zpopmin (string $key, int $value = null)
+
+
+
+
+
+
+
+
+ RedisCluster|array|bool
+ zrange (string $key, mixed $start, mixed $end, array|bool|null $options = null)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zrangestore (string $dstkey, string $srckey, int $start, int $end, array|bool|null $options = null)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ zrangebylex (string $key, string $min, string $max, int $offset = -1, int $count = -1)
+
+
+
+
+
+
+
+
+ RedisCluster|array|false
+ zrangebyscore (string $key, string $start, string $end, array $options = [])
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zrank (string $key, mixed $member)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zrem (string $key, string $value, string ...$other_values)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zremrangebylex (string $key, string $min, string $max)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zremrangebyrank (string $key, string $min, string $max)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zremrangebyscore (string $key, string $min, string $max)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ zrevrange (string $key, string $min, string $max, array $options = null)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ zrevrangebylex (string $key, string $min, string $max, array $options = null)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ zrevrangebyscore (string $key, string $min, string $max, array $options = null)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zrevrank (string $key, mixed $member)
+
+
+
+
+
+
+
+
+ RedisCluster|bool|array
+ zscan (string $key, int|null $iterator, string|null $pattern = null, int $count = 0)
+
+
+
+
+
+
+
+
+ RedisCluster|float|false
+ zscore (string $key, mixed $member)
+
+
+
+
+
+
+
+
+ RedisCluster|int|false
+ zunionstore (string $dst, array $keys, array|null $weights = NULL, string|null $aggregate = NULL)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/RedisClusterException.html b/docs/RedisClusterException.html
new file mode 100644
index 0000000..c366b7f
--- /dev/null
+++ b/docs/RedisClusterException.html
@@ -0,0 +1,103 @@
+
+
+
+
+
+ RedisClusterException | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/RedisException.html b/docs/RedisException.html
new file mode 100644
index 0000000..4851bca
--- /dev/null
+++ b/docs/RedisException.html
@@ -0,0 +1,103 @@
+
+
+
+
+
+ RedisException | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/RedisSentinel.html b/docs/RedisSentinel.html
new file mode 100644
index 0000000..00674d8
--- /dev/null
+++ b/docs/RedisSentinel.html
@@ -0,0 +1,748 @@
+
+
+
+
+
+ RedisSentinel | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
class
+ RedisSentinel (View source )
+
+
+
+
+
+
+
+
+
+
+
Methods
+
+
+
+
+
+
+
+
__construct (string $host, int $port = 26379, float $timeout = 0, mixed $persistent = null, int $retry_interval = 0, float $read_timeout = 0, mixed $auth = null, array $context = null)
+
+
No description
+
+
+
+
+
+
+
ckquorum (string $master)
+
+
No description
+
+
+
+
+
+
+
failover (string $master)
+
+
No description
+
+
+
+
+
+
+
+
+
master (string $master)
+
+
No description
+
+
+
+
+
+
+ string
+
+
+
myid ()
+
+
No description
+
+
+
+
+
+
+
ping ()
+
+
No description
+
+
+
+
+
+
+
reset (string $pattern)
+
+
No description
+
+
+
+
+
+
+
sentinels (string $master)
+
+
No description
+
+
+
+
+
+
+
slaves (string $master)
+
+
No description
+
+
+
+
+
+
+
Details
+
+
+
+
+
+
+ __construct (string $host, int $port = 26379, float $timeout = 0, mixed $persistent = null, int $retry_interval = 0, float $read_timeout = 0, mixed $auth = null, array $context = null)
+
+
+
+
+
+
+
+
+
+
+
+ array|bool|RedisSentinel
+ getMasterAddrByName (string $master)
+
+
+
+
+
+
+
+
+
+
+ string
+ myid ()
+
+
+
+
+
+
+
+
+
+
+ array|bool|RedisSentinel
+ sentinels (string $master)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/[Global_Namespace].html b/docs/[Global_Namespace].html
new file mode 100644
index 0000000..9c8ee96
--- /dev/null
+++ b/docs/[Global_Namespace].html
@@ -0,0 +1,134 @@
+
+
+
+
+
+ [Global Namespace] | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Namespaces
+
+
+
Classes
+
+
+
+
+
+
+
+
+
diff --git a/docs/classes.html b/docs/classes.html
new file mode 100644
index 0000000..255cc79
--- /dev/null
+++ b/docs/classes.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+ All Classes | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/css/bootstrap-theme.min.css b/docs/css/bootstrap-theme.min.css
new file mode 100644
index 0000000..59e7de9
--- /dev/null
+++ b/docs/css/bootstrap-theme.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Generated using the Bootstrap Customizer (https://getbootstrap.com/docs/3.4/customize/)
+ *//*!
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-default.disabled,.btn-primary.disabled,.btn-success.disabled,.btn-info.disabled,.btn-warning.disabled,.btn-danger.disabled,.btn-default[disabled],.btn-primary[disabled],.btn-success[disabled],.btn-info[disabled],.btn-warning[disabled],.btn-danger[disabled],fieldset[disabled] .btn-default,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-info,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-danger{-webkit-box-shadow:none;box-shadow:none}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:-o-linear-gradient(top, #fff 0, #e0e0e0 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), to(#e0e0e0));background-image:linear-gradient(to bottom, #fff 0, #e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top, #428bca 0, #2d6ca2 100%);background-image:-o-linear-gradient(top, #428bca 0, #2d6ca2 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #428bca), to(#2d6ca2));background-image:linear-gradient(to bottom, #428bca 0, #2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#2d6ca2;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:-o-linear-gradient(top, #5cb85c 0, #419641 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5cb85c), to(#419641));background-image:linear-gradient(to bottom, #5cb85c 0, #419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:-o-linear-gradient(top, #5bc0de 0, #2aabd2 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5bc0de), to(#2aabd2));background-image:linear-gradient(to bottom, #5bc0de 0, #2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:-o-linear-gradient(top, #f0ad4e 0, #eb9316 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f0ad4e), to(#eb9316));background-image:linear-gradient(to bottom, #f0ad4e 0, #eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:-o-linear-gradient(top, #d9534f 0, #c12e2a 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9534f), to(#c12e2a));background-image:linear-gradient(to bottom, #d9534f 0, #c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f5f5f5), to(#e8e8e8));background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x;background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:-o-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #428bca), to(#357ebd));background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-repeat:repeat-x;background-color:#357ebd}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0, #f8f8f8 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), to(#f8f8f8));background-image:linear-gradient(to bottom, #fff 0, #f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #dbdbdb 0, #e2e2e2 100%);background-image:-o-linear-gradient(top, #dbdbdb 0, #e2e2e2 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #dbdbdb), to(#e2e2e2));background-image:linear-gradient(to bottom, #dbdbdb 0, #e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:-o-linear-gradient(top, #3c3c3c 0, #222 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #3c3c3c), to(#222));background-image:linear-gradient(to bottom, #3c3c3c 0, #222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border-radius:4px}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #080808 0, #0f0f0f 100%);background-image:-o-linear-gradient(top, #080808 0, #0f0f0f 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #080808), to(#0f0f0f));background-image:linear-gradient(to bottom, #080808 0, #0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:-o-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #428bca), to(#357ebd));background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:-o-linear-gradient(top, #dff0d8 0, #c8e5bc 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #dff0d8), to(#c8e5bc));background-image:linear-gradient(to bottom, #dff0d8 0, #c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:-o-linear-gradient(top, #d9edf7 0, #b9def0 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9edf7), to(#b9def0));background-image:linear-gradient(to bottom, #d9edf7 0, #b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:-o-linear-gradient(top, #fcf8e3 0, #f8efc0 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fcf8e3), to(#f8efc0));background-image:linear-gradient(to bottom, #fcf8e3 0, #f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:-o-linear-gradient(top, #f2dede 0, #e7c3c3 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f2dede), to(#e7c3c3));background-image:linear-gradient(to bottom, #f2dede 0, #e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:-o-linear-gradient(top, #ebebeb 0, #f5f5f5 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #ebebeb), to(#f5f5f5));background-image:linear-gradient(to bottom, #ebebeb 0, #f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top, #428bca 0, #3071a9 100%);background-image:-o-linear-gradient(top, #428bca 0, #3071a9 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #428bca), to(#3071a9));background-image:linear-gradient(to bottom, #428bca 0, #3071a9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:-o-linear-gradient(top, #5cb85c 0, #449d44 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5cb85c), to(#449d44));background-image:linear-gradient(to bottom, #5cb85c 0, #449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:-o-linear-gradient(top, #5bc0de 0, #31b0d5 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #5bc0de), to(#31b0d5));background-image:linear-gradient(to bottom, #5bc0de 0, #31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:-o-linear-gradient(top, #f0ad4e 0, #ec971f 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f0ad4e), to(#ec971f));background-image:linear-gradient(to bottom, #f0ad4e 0, #ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:-o-linear-gradient(top, #d9534f 0, #c9302c 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9534f), to(#c9302c));background-image:linear-gradient(to bottom, #d9534f 0, #c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top, #428bca 0, #3278b3 100%);background-image:-o-linear-gradient(top, #428bca 0, #3278b3 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #428bca), to(#3278b3));background-image:linear-gradient(to bottom, #428bca 0, #3278b3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);background-repeat:repeat-x;border-color:#3278b3}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0, #e8e8e8 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f5f5f5), to(#e8e8e8));background-image:linear-gradient(to bottom, #f5f5f5 0, #e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:-o-linear-gradient(top, #428bca 0, #357ebd 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #428bca), to(#357ebd));background-image:linear-gradient(to bottom, #428bca 0, #357ebd 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:-o-linear-gradient(top, #dff0d8 0, #d0e9c6 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #dff0d8), to(#d0e9c6));background-image:linear-gradient(to bottom, #dff0d8 0, #d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:-o-linear-gradient(top, #d9edf7 0, #c4e3f3 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #d9edf7), to(#c4e3f3));background-image:linear-gradient(to bottom, #d9edf7 0, #c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:-o-linear-gradient(top, #fcf8e3 0, #faf2cc 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #fcf8e3), to(#faf2cc));background-image:linear-gradient(to bottom, #fcf8e3 0, #faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:-o-linear-gradient(top, #f2dede 0, #ebcccc 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f2dede), to(#ebcccc));background-image:linear-gradient(to bottom, #f2dede 0, #ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:-o-linear-gradient(top, #e8e8e8 0, #f5f5f5 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #e8e8e8), to(#f5f5f5));background-image:linear-gradient(to bottom, #e8e8e8 0, #f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}
\ No newline at end of file
diff --git a/docs/css/bootstrap.min.css b/docs/css/bootstrap.min.css
new file mode 100644
index 0000000..633f747
--- /dev/null
+++ b/docs/css/bootstrap.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Generated using the Bootstrap Customizer (https://getbootstrap.com/docs/3.4/customize/)
+ *//*!
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{color:#000 !important;text-shadow:none !important;background:transparent !important;-webkit-box-shadow:none !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover,a.text-primary:focus{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover,a.text-success:focus{color:#2b542c}.text-info{color:#31708f}a.text-info:hover,a.text-info:focus{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover,a.text-warning:focus{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover,a.text-danger:focus{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover,a.bg-primary:focus{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:""}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:"\00A0 \2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*="col-"]{padding-right:0;padding-left:0}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}table col[class*="col-"]{position:static;display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;appearance:none}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:34px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#3071a9;border-color:#193c5a}.btn-primary:hover{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;background-image:none;border-color:#285e8e}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#fff;background-color:#285e8e;border-color:#193c5a}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.panel-body:before,.panel-body:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.panel-body:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}
\ No newline at end of file
diff --git a/docs/css/doctum.css b/docs/css/doctum.css
new file mode 100644
index 0000000..77796f8
--- /dev/null
+++ b/docs/css/doctum.css
@@ -0,0 +1,508 @@
+html,
+body,
+#content {
+ height: 100%;
+}
+
+/* Site menu */
+
+#site-nav.navbar-default {
+ margin: 0;
+ border-radius: 0;
+ border-bottom: 1px solid #ccc;
+ background-color: #edf3fe;
+ background-image: none;
+}
+
+#site-nav.navbar-default .navbar-brand,
+#site-nav.navbar-default .navbar-nav > li > a {
+ color: #000;
+}
+
+#site-nav.navbar-default .navbar-nav > li > a:hover {
+ text-decoration: underline;
+}
+
+#navbar-elements {
+ float: right;
+}
+
+@media (max-width: 768px) {
+ #navbar-elements {
+ float: none !important;
+ }
+}
+
+/* Namespace breadcrumbs */
+
+.namespace-breadcrumbs .breadcrumb {
+ margin: 0 0 12px;
+ border-radius: 0 0 4px 4px;
+ padding-left: 35px;
+}
+
+.namespace-breadcrumbs .breadcrumb > li + li:before {
+ content: "";
+}
+.namespace-breadcrumbs .breadcrumb > .backslash {
+ color: #ccc;
+}
+
+/* Site columns */
+
+#right-column {
+ margin-left: 20%;
+}
+
+#page-content {
+ padding: 0 30px;
+}
+
+#left-column {
+ width: 20%;
+ position: fixed;
+ height: 100%;
+ border-right: 1px solid #ccc;
+ line-height: 18px;
+ font-size: 13px;
+ display: flex;
+ flex-flow: column;
+}
+
+@media (max-width: 991px) {
+ #left-column {
+ display: none;
+ }
+ #right-column {
+ width: 100%;
+ margin-left: 0;
+ }
+}
+
+/* API Tree */
+
+#api-tree {
+ background: linear-gradient(to bottom, #fff, #fff 50%, #edf3fe 50%, #edf3fe);
+ background-size: 100% 56px;
+ overflow: auto;
+ height: 100%;
+ background-attachment: local;
+}
+
+#api-tree ul {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+
+#api-tree ul li {
+ padding: 0;
+ margin: 0;
+}
+
+/* Prevents the menu from jittering on lad */
+#api-tree .icon-play {
+ width: 26px;
+}
+
+#api-tree ul li .hd {
+ padding: 5px;
+}
+
+#api-tree li .hd:nth-child(even) {
+ background-color: #edf3fe;
+}
+
+#api-tree ul li.opened > .hd span {
+ -webkit-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+
+#api-tree .bd {
+ display: none;
+}
+
+#api-tree li.opened > .bd {
+ display: block;
+}
+
+#api-tree li .hd:hover {
+ background-color: #eee;
+}
+
+#api-tree li.active > .hd {
+ background-color: #3875d7;
+}
+
+#api-tree li.active > .hd a {
+ color: #eee;
+ font-weight: bold;
+}
+
+#api-tree a {
+ color: #222;
+}
+
+#api-tree div.leaf a {
+ margin-left: 20px;
+}
+
+#api-tree .hd span {
+ padding: 0px 8px;
+ font-size: 15px;
+ line-height: 85%;
+}
+
+/* Control panel, search form, version drop-down */
+
+#control-panel {
+ background: #e8e8e8;
+ border-bottom: 1px solid #666;
+ padding: 4px;
+}
+
+#control-panel form, #control-panel > .search-bar {
+ margin: 4px 4px 5px 4px;
+}
+
+#control-panel > .search-bar > .progress {
+ height: 5px;
+ margin-bottom: 0px;
+}
+
+#control-panel > .search-bar > .progress > .progress-bar {
+ background: #30a0e0;
+}
+
+/* Source: https://stackoverflow.com/a/38229228/5155484 */
+
+.progress-bar.indeterminate {
+ position: relative;
+ animation: progress-indeterminate 3s linear infinite;
+}
+
+@keyframes progress-indeterminate {
+ from { left: -25%; width: 25%; }
+ to { left: 100%; width: 25%;}
+}
+
+#search-form {
+ position: relative;
+}
+
+#search-form input {
+ width: 100%;
+ padding-left: 28px;
+}
+
+#search-form span.icon-search {
+ position: absolute;
+ left: 5px;
+ top: 8px;
+ font-size: 20px;
+ z-index: 2;
+}
+
+/** Typeahead */
+
+.auto-complete-results {
+ width: 100%;
+ z-index: 1;
+}
+
+.auto-complete-dropdown-menu {
+ overflow: auto;
+ max-height: 260px;
+ margin-top: 9px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border-radius: 8px;
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ padding: 8px;
+}
+
+.auto-complete-result {
+ padding: 8px;
+ border-bottom: 1px solid #ccc;
+ font-size: 1.1em;
+}
+
+.auto-complete-selected, .auto-complete-result:hover {
+ background-color: #3875d7;
+ color: #fff;
+}
+
+.auto-complete-selected > mark.auto-complete-highlight, .auto-complete-result:hover > mark.auto-complete-highlight {
+ color: #fff;
+}
+
+.auto-complete-highlight {
+ padding: 0px;
+ font-weight: bold;
+ background-color: transparent;
+}
+
+/** General typography **/
+
+.navbar {
+ border-bottom: 0;
+}
+
+.page-header {
+ margin: 0 0 20px;
+}
+
+abbr[title],
+abbr[data-original-title],
+abbr {
+ border-bottom: none;
+ cursor: pointer;
+}
+
+a abbr {
+ cursor: pointer;
+}
+
+.method-description table,
+.description table {
+ border: solid 1px #ccc;
+ padding: 1em;
+ margin: 1em;
+}
+
+.method-description td,
+.method-description th,
+.description td,
+.description th {
+ padding: 0.75em 1.25em;
+}
+
+.method-description tbody tr:nth-child(even),
+.description tbody tr:nth-child(even) {
+ background: #edf3fe;
+}
+
+.method-description tbody tr:nth-child(odd),
+.description tbody tr:nth-child(odd) {
+ background: #fff;
+}
+
+.method-description thead tr,
+.description thead tr {
+ background: #edf3fe;
+}
+
+/** General Doctum styling **/
+
+.underlined > .row {
+ padding: 8px 0;
+ border-bottom: 1px solid #ddd;
+}
+
+#footer {
+ text-align: right;
+ margin: 30px;
+ font-size: 11px;
+}
+
+.description {
+ margin: 10px 0;
+ padding: 10px;
+ background-color: #efefef;
+}
+
+.description p {
+ padding: 0;
+ margin: 8px 0;
+}
+
+.method-description {
+ margin: 0 0 24px 0;
+}
+
+.details {
+ padding-left: 30px;
+}
+
+#method-details .method-item {
+ margin-bottom: 30px;
+}
+
+.method-item h3,
+.method-item h3 code {
+ background-color: #eee;
+}
+
+.method-item h3 {
+ padding: 4px;
+ margin-bottom: 20px;
+ font-size: 20px;
+}
+
+.location {
+ font-size: 11px;
+ float: right;
+ font-style: italic;
+}
+
+.namespace-list a {
+ padding: 3px 8px;
+ margin: 0 5px 5px 0;
+ border: 1px solid #ddd;
+ background-color: #f9f9f9;
+ display: inline-block;
+ border-radius: 4px;
+}
+
+.no-description {
+ color: #ccc;
+ font-size: 90%;
+}
+
+.type {
+ overflow-wrap: break-word;
+}
+
+/* Namespaces page */
+
+.namespaces {
+ clear: both;
+}
+
+.namespaces .namespace-container {
+ float: left;
+ margin: 0 14px 14px 0;
+ min-width: 30%;
+}
+
+.namespaces h2 {
+ margin: 0 0 20px 0;
+}
+
+.namespace-container > h2 {
+ background-color: #edf3fe;
+ padding: 4px 4px 4px 8px;
+ font-size: 25px;
+ margin: 20px 0;
+}
+
+@media (max-width: 991px) {
+ .namespaces .namespace-container {
+ margin-right: 0;
+ width: 100%;
+ }
+}
+
+/** Code and pre tags **/
+
+tt,
+code,
+pre {
+ font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
+}
+
+code {
+ padding: 0;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ margin: 0;
+ font-size: 85%;
+ background-color: rgba(0, 0, 0, 0.04);
+ border-radius: 3px;
+ color: #333;
+}
+
+pre {
+ padding: 16px;
+ overflow: auto;
+ font-size: 85%;
+ line-height: 1.45;
+ background-color: #f7f7f7;
+ border-radius: 3px;
+}
+
+pre.examples {
+ padding: 1rem;
+}
+
+#page-content > h2 {
+ background-color: #edf3fe;
+ padding: 4px 4px 4px 8px;
+ font-size: 25px;
+ margin: 20px 0;
+}
+
+
+/** Doc index **/
+
+dt {
+ font-weight: normal;
+}
+
+dd {
+ margin-left: 30px;
+ line-height: 1.5em;
+}
+
+#doc-index h2 {
+ font-weight: bold;
+ margin: 30px 0;
+}
+
+#doc-index .pagination {
+ margin: 0;
+}
+
+/* Search page */
+
+.search-results {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+}
+
+.search-results li {
+ list-style-type: none;
+ margin: 0;
+ padding: 14px 0;
+ border-bottom: 1px solid #ccc;
+}
+
+.search-results > li > h2 {
+ background: none;
+ margin: 0;
+ padding: 0;
+ font-size: 18px;
+}
+
+.search-results > li > h2 > a {
+ float: left;
+ display: block;
+ margin: 0 0 4px 0;
+}
+
+.search-results .search-type {
+ float: right;
+ margin: 0 0 4px 0;
+}
+
+.search-results .search-from {
+ margin: 0 0 12px 0;
+ font-size: 12px;
+ color: #999;
+}
+
+.search-results .search-from a {
+ font-style: italic;
+}
+
+.search-results .search-description {
+ margin: 8px 0 0 30px;
+}
+
+.search-description {
+ white-space: pre;
+}
diff --git a/docs/doc-index.html b/docs/doc-index.html
new file mode 100644
index 0000000..e9d8899
--- /dev/null
+++ b/docs/doc-index.html
@@ -0,0 +1,1187 @@
+
+
+
+
+
+ Index | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
A
+
+Redis::acl () — Method in class Redis
+
+Redis::append () — Method in class Redis
+ Append data to a Redis STRING key.
+Redis::auth () — Method in class Redis
+ Authenticate a Redis connection after its been established.
+RedisCluster::acl () — Method in class RedisCluster
+
+RedisCluster::append () — Method in class RedisCluster
+ B
+
+Redis::bgSave () — Method in class Redis
+ Execute a save of the Redis database in the background.
+Redis::bgrewriteaof () — Method in class Redis
+ Asynchronously rewrite Redis' append-only file
+Redis::bitcount () — Method in class Redis
+ Count the number of set bits in a Redis string.
+Redis::bitop () — Method in class Redis
+
+Redis::bitpos () — Method in class Redis
+ Return the position of the first bit set to 0 or 1 in a string.
+Redis::blPop () — Method in class Redis
+ Pop an element off the beginning of a Redis list or lists, potentially blocking up to a specified
+timeout. This method may be called in two distinct ways, of which examples are provided below.
+Redis::brPop () — Method in class Redis
+ Pop an element off of the end of a Redis list or lists, potentially blocking up to a specified timeout.
+Redis::brpoplpush () — Method in class Redis
+ Pop an element from the end of a Redis list, pushing it to the beginning of another Redis list,
+optionally blocking up to a specified timeout.
+Redis::bzPopMax () — Method in class Redis
+ POP the maximum scoring element off of one or more sorted sets, blocking up to a specified
+timeout if no elements are available.
+Redis::bzPopMin () — Method in class Redis
+ POP the minimum scoring element off of one or more sorted sets, blocking up to a specified timeout
+if no elements are available
+Redis::bzmpop () — Method in class Redis
+ POP one or more elements from one or more sorted sets, blocking up to a specified amount of time
+when no elements are available.
+Redis::blmpop () — Method in class Redis
+ Pop one or more elements from one or more Redis LISTs, blocking up to a specified timeout when
+no elements are available.
+RedisArray::bgsave () — Method in class RedisArray
+
+RedisCluster::bgrewriteaof () — Method in class RedisCluster
+
+RedisCluster::bgsave () — Method in class RedisCluster
+
+RedisCluster::bitcount () — Method in class RedisCluster
+
+RedisCluster::bitop () — Method in class RedisCluster
+
+RedisCluster::bitpos () — Method in class RedisCluster
+ Return the position of the first bit set to 0 or 1 in a string.
+RedisCluster::blpop () — Method in class RedisCluster
+ See Redis::blpop()
+RedisCluster::brpop () — Method in class RedisCluster
+ See Redis::brpop()
+RedisCluster::brpoplpush () — Method in class RedisCluster
+ See Redis::brpoplpush()
+RedisCluster::bzpopmax () — Method in class RedisCluster
+
+RedisCluster::bzpopmin () — Method in class RedisCluster
+
+RedisCluster::bzmpop () — Method in class RedisCluster
+
+RedisCluster::blmpop () — Method in class RedisCluster
+ C
+
+Redis::clearLastError () — Method in class Redis
+ Reset any last error on the connection to NULL
+Redis::client () — Method in class Redis
+
+Redis::close () — Method in class Redis
+
+Redis::command () — Method in class Redis
+
+Redis::config () — Method in class Redis
+ Execute the Redis CONFIG command in a variety of ways. What the command does in particular depends
+on the $operation qualifier.
+Redis::connect () — Method in class Redis
+
+Redis::copy () — Method in class Redis
+ Make a copy of a redis key.
+RedisCluster::clearlasterror () — Method in class RedisCluster
+
+RedisCluster::client () — Method in class RedisCluster
+
+RedisCluster::close () — Method in class RedisCluster
+
+RedisCluster::cluster () — Method in class RedisCluster
+
+RedisCluster::command () — Method in class RedisCluster
+
+RedisCluster::config () — Method in class RedisCluster
+
+RedisSentinel::ckquorum () — Method in class RedisSentinel
+ D
+
+Redis::dbSize () — Method in class Redis
+ Return the number of keys in the currently selected Redis database.
+Redis::debug () — Method in class Redis
+
+Redis::decr () — Method in class Redis
+ Decrement a Redis integer by 1 or a provided value.
+Redis::decrBy () — Method in class Redis
+ Decrement a redis integer by a value
+Redis::del () — Method in class Redis
+ Delete one or more keys from Redis.
+Redis::delete () — Method in class Redis
+
+Redis::discard () — Method in class Redis
+ Discard a transaction currently in progress.
+Redis::dump () — Method in class Redis
+ Dump Redis' internal binary representation of a key.
+RedisArray::del () — Method in class RedisArray
+
+RedisArray::discard () — Method in class RedisArray
+
+RedisCluster::dbsize () — Method in class RedisCluster
+
+RedisCluster::decr () — Method in class RedisCluster
+
+RedisCluster::decrby () — Method in class RedisCluster
+
+RedisCluster::decrbyfloat () — Method in class RedisCluster
+
+RedisCluster::del () — Method in class RedisCluster
+
+RedisCluster::discard () — Method in class RedisCluster
+
+RedisCluster::dump () — Method in class RedisCluster
+ E
+
+Redis::echo () — Method in class Redis
+ Have Redis repeat back an arbitrary string to the client.
+Redis::eval () — Method in class Redis
+ Execute a LUA script on the redis server.
+Redis::eval_ro () — Method in class Redis
+ This is simply the read-only variant of eval, meaning the underlying script
+may not modify data in redis.
+Redis::evalsha () — Method in class Redis
+ Execute a LUA script on the server but instead of sending the script, send
+the SHA1 hash of the script.
+Redis::evalsha_ro () — Method in class Redis
+ This is simply the read-only variant of evalsha, meaning the underlying script
+may not modify data in redis.
+Redis::exec () — Method in class Redis
+ Execute either a MULTI or PIPELINE block and return the array of replies.
+Redis::exists () — Method in class Redis
+ Test if one or more keys exist.
+Redis::expire () — Method in class Redis
+ Sets an expiration in seconds on the key in question. If connected to
+redis-server >= 7.0.0 you may send an additional "mode" argument which
+modifies how the command will execute.
+Redis::expireAt () — Method in class Redis
+ Set a key's expiration to a specific Unix timestamp in seconds. If
+connected to Redis >= 7.0.0 you can pass an optional 'mode' argument.
+Redis::expiretime () — Method in class Redis
+ Get the expiration of a given key as a unix timestamp
+RedisArray::exec () — Method in class RedisArray
+
+RedisCluster::echo () — Method in class RedisCluster
+
+RedisCluster::eval () — Method in class RedisCluster
+
+RedisCluster::eval_ro () — Method in class RedisCluster
+
+RedisCluster::evalsha () — Method in class RedisCluster
+
+RedisCluster::evalsha_ro () — Method in class RedisCluster
+
+RedisCluster::exec () — Method in class RedisCluster
+
+RedisCluster::exists () — Method in class RedisCluster
+
+RedisCluster::expire () — Method in class RedisCluster
+
+RedisCluster::expireat () — Method in class RedisCluster
+
+RedisCluster::expiretime () — Method in class RedisCluster
+ F
+
+Redis::failover () — Method in class Redis
+
+Redis::flushAll () — Method in class Redis
+ Deletes every key in all Redis databases
+Redis::flushDB () — Method in class Redis
+ Deletes all the keys of the currently selected database.
+RedisArray::flushall () — Method in class RedisArray
+
+RedisArray::flushdb () — Method in class RedisArray
+
+RedisCluster::flushall () — Method in class RedisCluster
+
+RedisCluster::flushdb () — Method in class RedisCluster
+
+RedisSentinel::failover () — Method in class RedisSentinel
+
+RedisSentinel::flushconfig () — Method in class RedisSentinel
+ G
+
+Redis::geoadd () — Method in class Redis
+
+Redis::geodist () — Method in class Redis
+
+Redis::geohash () — Method in class Redis
+
+Redis::geopos () — Method in class Redis
+
+Redis::georadius () — Method in class Redis
+
+Redis::georadius_ro () — Method in class Redis
+
+Redis::georadiusbymember () — Method in class Redis
+
+Redis::georadiusbymember_ro () — Method in class Redis
+
+Redis::geosearch () — Method in class Redis
+
+Redis::geosearchstore () — Method in class Redis
+
+Redis::get () — Method in class Redis
+
+Redis::getAuth () — Method in class Redis
+ Get the authentication information on the connection, if any.
+Redis::getBit () — Method in class Redis
+
+Redis::getEx () — Method in class Redis
+
+Redis::getDBNum () — Method in class Redis
+
+Redis::getDel () — Method in class Redis
+
+Redis::getHost () — Method in class Redis
+ Return the host or Unix socket we are connected to.
+Redis::getLastError () — Method in class Redis
+ Get the last error returned to us from Redis, if any.
+Redis::getMode () — Method in class Redis
+ Returns whether the connection is in ATOMIC, MULTI, or PIPELINE mode
+Redis::getOption () — Method in class Redis
+ Retrieve the value of a configuration setting as set by Redis::setOption()
+Redis::getPersistentID () — Method in class Redis
+ Get the persistent connection ID, if there is one.
+Redis::getPort () — Method in class Redis
+ Get the port we are connected to. This number will be zero if we are connected to a unix socket.
+Redis::getRange () — Method in class Redis
+ Retrieve a substring of a string by index.
+Redis::getReadTimeout () — Method in class Redis
+ Get the currently set read timeout on the connection.
+Redis::getset () — Method in class Redis
+ Sets a key and returns any previously set value, if the key already existed.
+Redis::getTimeout () — Method in class Redis
+ Retrieve any set connection timeout
+Redis::getTransferredBytes () — Method in class Redis
+
+RedisArray::getOption () — Method in class RedisArray
+
+RedisCluster::geoadd () — Method in class RedisCluster
+
+RedisCluster::geodist () — Method in class RedisCluster
+
+RedisCluster::geohash () — Method in class RedisCluster
+
+RedisCluster::geopos () — Method in class RedisCluster
+
+RedisCluster::georadius () — Method in class RedisCluster
+
+RedisCluster::georadius_ro () — Method in class RedisCluster
+
+RedisCluster::georadiusbymember () — Method in class RedisCluster
+
+RedisCluster::georadiusbymember_ro () — Method in class RedisCluster
+
+RedisCluster::get () — Method in class RedisCluster
+
+RedisCluster::getbit () — Method in class RedisCluster
+
+RedisCluster::getlasterror () — Method in class RedisCluster
+
+RedisCluster::getmode () — Method in class RedisCluster
+
+RedisCluster::getoption () — Method in class RedisCluster
+
+RedisCluster::getrange () — Method in class RedisCluster
+
+RedisCluster::getset () — Method in class RedisCluster
+
+RedisCluster::gettransferredbytes () — Method in class RedisCluster
+
+RedisSentinel::getMasterAddrByName () — Method in class RedisSentinel
+ H
+
+Redis::hDel () — Method in class Redis
+ Remove one or more fields from a hash.
+Redis::hExists () — Method in class Redis
+ Checks whether a field exists in a hash.
+Redis::hGet () — Method in class Redis
+
+Redis::hGetAll () — Method in class Redis
+ Read every field and value from a hash.
+Redis::hIncrBy () — Method in class Redis
+ Increment a hash field's value by an integer
+Redis::hIncrByFloat () — Method in class Redis
+ Increment a hash field by a floating point value
+Redis::hKeys () — Method in class Redis
+ Retrieve all of the fields of a hash.
+Redis::hLen () — Method in class Redis
+ Get the number of fields in a hash.
+Redis::hMget () — Method in class Redis
+ Get one or more fields from a hash.
+Redis::hMset () — Method in class Redis
+ Add or update one or more hash fields and values
+Redis::hRandField () — Method in class Redis
+ Get one or more random field from a hash.
+Redis::hSet () — Method in class Redis
+
+Redis::hSetNx () — Method in class Redis
+ Set a hash field and value, but only if that field does not exist
+Redis::hStrLen () — Method in class Redis
+ Get the string length of a hash field
+Redis::hVals () — Method in class Redis
+ Get all of the values from a hash.
+Redis::hscan () — Method in class Redis
+ Iterate over the fields and values of a hash in an incremental fashion.
+RedisArray::hscan () — Method in class RedisArray
+
+RedisCluster::hdel () — Method in class RedisCluster
+
+RedisCluster::hexists () — Method in class RedisCluster
+
+RedisCluster::hget () — Method in class RedisCluster
+
+RedisCluster::hgetall () — Method in class RedisCluster
+
+RedisCluster::hincrby () — Method in class RedisCluster
+
+RedisCluster::hincrbyfloat () — Method in class RedisCluster
+
+RedisCluster::hkeys () — Method in class RedisCluster
+
+RedisCluster::hlen () — Method in class RedisCluster
+
+RedisCluster::hmget () — Method in class RedisCluster
+
+RedisCluster::hmset () — Method in class RedisCluster
+
+RedisCluster::hscan () — Method in class RedisCluster
+
+RedisCluster::hset () — Method in class RedisCluster
+
+RedisCluster::hsetnx () — Method in class RedisCluster
+
+RedisCluster::hstrlen () — Method in class RedisCluster
+
+RedisCluster::hvals () — Method in class RedisCluster
+ I
+
+Redis::incr () — Method in class Redis
+ Increment a key's value, optionally by a specifc amount.
+Redis::incrBy () — Method in class Redis
+ Increment a key by a specific integer value
+Redis::incrByFloat () — Method in class Redis
+ Increment a numeric key by a floating point value.
+Redis::info () — Method in class Redis
+ Retrieve information about the connected redis-server. If no arguments are passed to
+this function, redis will return every info field. Alternatively you may pass a specific
+section you want returned (e.g. 'server', or 'memory') to receive only information pertaining
+to that section.
+Redis::isConnected () — Method in class Redis
+ Check if we are currently connected to a Redis instance.
+RedisArray::info () — Method in class RedisArray
+
+RedisCluster::incr () — Method in class RedisCluster
+
+RedisCluster::incrby () — Method in class RedisCluster
+
+RedisCluster::incrbyfloat () — Method in class RedisCluster
+
+RedisCluster::info () — Method in class RedisCluster
+ Retrieve information about the connected redis-server. If no arguments are passed to
+this function, redis will return every info field. Alternatively you may pass a specific
+section you want returned (e.g. 'server', or 'memory') to receive only information pertaining
+to that section.
K
+
+Redis::keys () — Method in class Redis
+
+RedisArray::keys () — Method in class RedisArray
+
+RedisCluster::keys () — Method in class RedisCluster
+ L
+
+Redis::lmpop () — Method in class Redis
+ Pop one or more elements off of one or more Redis LISTs.
+Redis::lcs () — Method in class Redis
+ Get the longest common subsequence between two string keys.
+Redis::lInsert () — Method in class Redis
+
+Redis::lLen () — Method in class Redis
+
+Redis::lMove () — Method in class Redis
+
+Redis::lPop () — Method in class Redis
+
+Redis::lPos () — Method in class Redis
+
+Redis::lPush () — Method in class Redis
+
+Redis::lPushx () — Method in class Redis
+
+Redis::lSet () — Method in class Redis
+
+Redis::lastSave () — Method in class Redis
+
+Redis::lindex () — Method in class Redis
+
+Redis::lrange () — Method in class Redis
+
+Redis::lrem () — Method in class Redis
+
+Redis::ltrim () — Method in class Redis
+
+RedisCluster::lmpop () — Method in class RedisCluster
+
+RedisCluster::lcs () — Method in class RedisCluster
+
+RedisCluster::lastsave () — Method in class RedisCluster
+
+RedisCluster::lget () — Method in class RedisCluster
+
+RedisCluster::lindex () — Method in class RedisCluster
+
+RedisCluster::linsert () — Method in class RedisCluster
+
+RedisCluster::llen () — Method in class RedisCluster
+
+RedisCluster::lpop () — Method in class RedisCluster
+
+RedisCluster::lpush () — Method in class RedisCluster
+
+RedisCluster::lpushx () — Method in class RedisCluster
+
+RedisCluster::lrange () — Method in class RedisCluster
+
+RedisCluster::lrem () — Method in class RedisCluster
+
+RedisCluster::lset () — Method in class RedisCluster
+
+RedisCluster::ltrim () — Method in class RedisCluster
+ M
+
+Redis::mget () — Method in class Redis
+
+Redis::migrate () — Method in class Redis
+
+Redis::move () — Method in class Redis
+
+Redis::mset () — Method in class Redis
+
+Redis::msetnx () — Method in class Redis
+
+Redis::multi () — Method in class Redis
+
+RedisArray::mget () — Method in class RedisArray
+
+RedisArray::mset () — Method in class RedisArray
+
+RedisArray::multi () — Method in class RedisArray
+
+RedisCluster::mget () — Method in class RedisCluster
+
+RedisCluster::mset () — Method in class RedisCluster
+
+RedisCluster::msetnx () — Method in class RedisCluster
+
+RedisCluster::multi () — Method in class RedisCluster
+
+RedisSentinel::master () — Method in class RedisSentinel
+
+RedisSentinel::masters () — Method in class RedisSentinel
+
+RedisSentinel::myid () — Method in class RedisSentinel
+ O
+
+Redis::object () — Method in class Redis
+
+Redis::open () — Method in class Redis
+
+RedisCluster::object () — Method in class RedisCluster
+ P
+
+Redis::pexpiretime () — Method in class Redis
+ Get the expriation timestamp of a given Redis key but in milliseconds.
+Redis::pconnect () — Method in class Redis
+
+Redis::persist () — Method in class Redis
+
+Redis::pexpire () — Method in class Redis
+ Sets an expiration in milliseconds on a given key. If connected to Redis >= 7.0.0
+you can pass an optional mode argument that modifies how the command will execute.
+Redis::pexpireAt () — Method in class Redis
+ Set a key's expiration to a specific Unix Timestamp in milliseconds. If connected to
+Redis >= 7.0.0 you can pass an optional 'mode' argument.
+Redis::pfadd () — Method in class Redis
+ Add one or more elements to a Redis HyperLogLog key
+Redis::pfcount () — Method in class Redis
+ Retrieve the cardinality of a Redis HyperLogLog key.
+Redis::pfmerge () — Method in class Redis
+ Merge one or more source HyperLogLog sets into a destination set.
+Redis::ping () — Method in class Redis
+ PING the redis server with an optional string argument.
+Redis::pipeline () — Method in class Redis
+ Enter into pipeline mode.
+Redis::popen () — Method in class Redis
+
+Redis::psetex () — Method in class Redis
+
+Redis::psubscribe () — Method in class Redis
+ Subscribe to one or more glob-style patterns
+Redis::pttl () — Method in class Redis
+ Get a keys time to live in milliseconds.
+Redis::publish () — Method in class Redis
+ Publish a message to a pubsub channel
+Redis::pubsub () — Method in class Redis
+
+Redis::punsubscribe () — Method in class Redis
+ Unsubscribe from one or more channels by pattern
+RedisArray::ping () — Method in class RedisArray
+
+RedisCluster::pexpiretime () — Method in class RedisCluster
+
+RedisCluster::persist () — Method in class RedisCluster
+
+RedisCluster::pexpire () — Method in class RedisCluster
+
+RedisCluster::pexpireat () — Method in class RedisCluster
+
+RedisCluster::pfadd () — Method in class RedisCluster
+
+RedisCluster::pfcount () — Method in class RedisCluster
+
+RedisCluster::pfmerge () — Method in class RedisCluster
+
+RedisCluster::ping () — Method in class RedisCluster
+ PING an instance in the redis cluster.
+RedisCluster::psetex () — Method in class RedisCluster
+
+RedisCluster::psubscribe () — Method in class RedisCluster
+
+RedisCluster::pttl () — Method in class RedisCluster
+
+RedisCluster::publish () — Method in class RedisCluster
+
+RedisCluster::pubsub () — Method in class RedisCluster
+
+RedisCluster::punsubscribe () — Method in class RedisCluster
+
+RedisSentinel::ping () — Method in class RedisSentinel
+ R
+
Redis
+
+Redis::rPush () — Method in class Redis
+
+Redis::rPushx () — Method in class Redis
+
+Redis::rPop () — Method in class Redis
+ Pop one or more elements from the end of a list.
+Redis::randomKey () — Method in class Redis
+ Return a random key from the current database
+Redis::rawcommand () — Method in class Redis
+ Execute any arbitrary Redis command by name.
+Redis::rename () — Method in class Redis
+ Unconditionally rename a key from $old_name to $new_name
+Redis::renameNx () — Method in class Redis
+ Renames $key_src to $key_dst but only if newkey does not exist.
+Redis::reset () — Method in class Redis
+ Reset the state of the connection.
+Redis::restore () — Method in class Redis
+ Restore a key by the binary payload generated by the DUMP command.
+Redis::role () — Method in class Redis
+ Query whether the connected instance is a primary or replica
+Redis::rpoplpush () — Method in class Redis
+ Atomically pop an element off the end of a Redis LIST and push it to the beginning of
+another.
+Redis::replicaof () — Method in class Redis
+ Used to turn a Redis instance into a replica of another, or to remove
+replica status promoting the instance to a primary.
RedisArray
+ RedisCluster
+
+RedisCluster::randomkey () — Method in class RedisCluster
+
+RedisCluster::rawcommand () — Method in class RedisCluster
+
+RedisCluster::rename () — Method in class RedisCluster
+
+RedisCluster::renamenx () — Method in class RedisCluster
+
+RedisCluster::restore () — Method in class RedisCluster
+
+RedisCluster::role () — Method in class RedisCluster
+
+RedisCluster::rpop () — Method in class RedisCluster
+
+RedisCluster::rpoplpush () — Method in class RedisCluster
+
+RedisCluster::rpush () — Method in class RedisCluster
+
+RedisCluster::rpushx () — Method in class RedisCluster
+ RedisClusterException
+ RedisException
+ RedisSentinel
+
+RedisSentinel::reset () — Method in class RedisSentinel
+ S
+
+Redis::sAdd () — Method in class Redis
+ Add one or more values to a Redis SET key.
+Redis::sAddArray () — Method in class Redis
+ Add one ore more values to a Redis SET key. This is an alternative to Redis::sadd() but
+instead of being variadic, takes a single array of values.
+Redis::sDiff () — Method in class Redis
+ Given one or more Redis SETS, this command returns all of the members from the first
+set that are not in any subsequent set.
+Redis::sDiffStore () — Method in class Redis
+ This method performs the same operation as SDIFF except it stores the resulting diff
+values in a specified destination key.
+Redis::sInter () — Method in class Redis
+ Given one or more Redis SET keys, this command will return all of the elements that are
+in every one.
+Redis::sintercard () — Method in class Redis
+ Compute the intersection of one or more sets and return the cardinality of the result.
+Redis::sInterStore () — Method in class Redis
+ Perform the intersection of one or more Redis SETs, storing the result in a destination
+key, rather than returning them.
+Redis::sMembers () — Method in class Redis
+ Retrieve every member from a set key.
+Redis::sMisMember () — Method in class Redis
+ Check if one or more values are members of a set.
+Redis::sMove () — Method in class Redis
+ Pop a member from one set and push it onto another. This command will create the
+destination set if it does not currently exist.
+Redis::sPop () — Method in class Redis
+ Remove one or more elements from a set.
+Redis::sRandMember () — Method in class Redis
+ Retrieve one or more random members of a set.
+Redis::sUnion () — Method in class Redis
+ Returns the union of one or more Redis SET keys.
+Redis::sUnionStore () — Method in class Redis
+ Perform a union of one or more Redis SET keys and store the result in a new set
+Redis::save () — Method in class Redis
+ Persist the Redis database to disk. This command will block the server until the save is
+completed. For a nonblocking alternative, see Redis::bgsave().
+Redis::scan () — Method in class Redis
+ Incrementally scan the Redis keyspace, with optional pattern and type matching.
+Redis::scard () — Method in class Redis
+ Retrieve the number of members in a Redis set.
+Redis::script () — Method in class Redis
+ An administrative command used to interact with LUA scripts stored on the server.
+Redis::select () — Method in class Redis
+ Select a specific Redis database.
+Redis::set () — Method in class Redis
+ Create or set a Redis STRING key to a value.
+Redis::setBit () — Method in class Redis
+ Set a specific bit in a Redis string to zero or one
+Redis::setRange () — Method in class Redis
+ Update or append to a Redis string at a specific starting index
+Redis::setOption () — Method in class Redis
+ Set a configurable option on the Redis object.
+Redis::setex () — Method in class Redis
+ Set a Redis STRING key with a specific expiration in seconds.
+Redis::setnx () — Method in class Redis
+ Set a key to a value, but only if that key does not already exist.
+Redis::sismember () — Method in class Redis
+ Check whether a given value is the member of a Redis SET.
+Redis::slaveof () — Method in class Redis
+ Turn a redis instance into a replica of another or promote a replica
+to a primary.
+Redis::slowlog () — Method in class Redis
+ Interact with Redis' slowlog functionality in various ways, depending
+on the value of 'operation'.
+Redis::sort () — Method in class Redis
+ Sort the contents of a Redis key in various ways.
+Redis::sort_ro () — Method in class Redis
+ This is simply a read-only variant of the sort command
+Redis::sortAsc () — Method in class Redis
+
+Redis::sortAscAlpha () — Method in class Redis
+
+Redis::sortDesc () — Method in class Redis
+
+Redis::sortDescAlpha () — Method in class Redis
+
+Redis::srem () — Method in class Redis
+ Remove one or more values from a Redis SET key.
+Redis::sscan () — Method in class Redis
+ Scan the members of a redis SET key.
+Redis::strlen () — Method in class Redis
+ Retrieve the length of a Redis STRING key.
+Redis::subscribe () — Method in class Redis
+ Subscribe to one or more Redis pubsub channels.
+Redis::swapdb () — Method in class Redis
+ Atomically swap two Redis databases so that all of the keys in the source database will
+now be in the destination database and vice-versa.
+RedisArray::save () — Method in class RedisArray
+
+RedisArray::scan () — Method in class RedisArray
+
+RedisArray::select () — Method in class RedisArray
+
+RedisArray::setOption () — Method in class RedisArray
+
+RedisArray::sscan () — Method in class RedisArray
+
+RedisCluster::sadd () — Method in class RedisCluster
+
+RedisCluster::saddarray () — Method in class RedisCluster
+
+RedisCluster::save () — Method in class RedisCluster
+
+RedisCluster::scan () — Method in class RedisCluster
+
+RedisCluster::scard () — Method in class RedisCluster
+
+RedisCluster::script () — Method in class RedisCluster
+
+RedisCluster::sdiff () — Method in class RedisCluster
+
+RedisCluster::sdiffstore () — Method in class RedisCluster
+
+RedisCluster::set () — Method in class RedisCluster
+
+RedisCluster::setbit () — Method in class RedisCluster
+
+RedisCluster::setex () — Method in class RedisCluster
+
+RedisCluster::setnx () — Method in class RedisCluster
+
+RedisCluster::setoption () — Method in class RedisCluster
+
+RedisCluster::setrange () — Method in class RedisCluster
+
+RedisCluster::sinter () — Method in class RedisCluster
+
+RedisCluster::sintercard () — Method in class RedisCluster
+
+RedisCluster::sinterstore () — Method in class RedisCluster
+
+RedisCluster::sismember () — Method in class RedisCluster
+
+RedisCluster::slowlog () — Method in class RedisCluster
+
+RedisCluster::smembers () — Method in class RedisCluster
+
+RedisCluster::smove () — Method in class RedisCluster
+
+RedisCluster::sort () — Method in class RedisCluster
+
+RedisCluster::sort_ro () — Method in class RedisCluster
+
+RedisCluster::spop () — Method in class RedisCluster
+
+RedisCluster::srandmember () — Method in class RedisCluster
+
+RedisCluster::srem () — Method in class RedisCluster
+
+RedisCluster::sscan () — Method in class RedisCluster
+
+RedisCluster::strlen () — Method in class RedisCluster
+
+RedisCluster::subscribe () — Method in class RedisCluster
+
+RedisCluster::sunion () — Method in class RedisCluster
+
+RedisCluster::sunionstore () — Method in class RedisCluster
+
+RedisSentinel::sentinels () — Method in class RedisSentinel
+
+RedisSentinel::slaves () — Method in class RedisSentinel
+ T
+
+Redis::touch () — Method in class Redis
+ Update one or more keys last modified metadata.
+Redis::time () — Method in class Redis
+ Retrieve the server time from the connected Redis instance.
+Redis::ttl () — Method in class Redis
+ Get the amount of time a Redis key has before it will expire, in seconds.
+Redis::type () — Method in class Redis
+ Get the type of a given Redis key.
+RedisCluster::touch () — Method in class RedisCluster
+
+RedisCluster::time () — Method in class RedisCluster
+
+RedisCluster::ttl () — Method in class RedisCluster
+
+RedisCluster::type () — Method in class RedisCluster
+ U
+
+Redis::unlink () — Method in class Redis
+ Delete one or more keys from the Redis database. Unlike this operation, the actual
+deletion is asynchronous, meaning it is safe to delete large keys without fear of
+Redis blocking for a long period of time.
+Redis::unsubscribe () — Method in class Redis
+ Unsubscribe from one or more subscribed channels.
+Redis::unwatch () — Method in class Redis
+ Remove any previously WATCH'ed keys in a transaction.
+RedisArray::unlink () — Method in class RedisArray
+
+RedisArray::unwatch () — Method in class RedisArray
+
+RedisCluster::unsubscribe () — Method in class RedisCluster
+
+RedisCluster::unlink () — Method in class RedisCluster
+
+RedisCluster::unwatch () — Method in class RedisCluster
+ W
+
+Redis::watch () — Method in class Redis
+
+Redis::wait () — Method in class Redis
+ Block the client up to the provided timeout until a certain number of replicas have confirmed
+recieving them.
+RedisCluster::watch () — Method in class RedisCluster
+ X
+
+Redis::xack () — Method in class Redis
+
+Redis::xadd () — Method in class Redis
+ Append a message to a stream.
+Redis::xautoclaim () — Method in class Redis
+
+Redis::xclaim () — Method in class Redis
+
+Redis::xdel () — Method in class Redis
+ Remove one or more specific IDs from a stream.
+Redis::xgroup () — Method in class Redis
+ XGROUP
+Redis::xinfo () — Method in class Redis
+ Retrieve information about a stream key.
+Redis::xlen () — Method in class Redis
+ Get the number of messages in a Redis STREAM key.
+Redis::xpending () — Method in class Redis
+ Interact with stream messages that have been consumed by a consumer group but not yet
+acknowledged with XACK.
+Redis::xrange () — Method in class Redis
+ Get a range of entries from a STREAM key.
+Redis::xread () — Method in class Redis
+ Consume one or more unconsumed elements in one or more streams.
+Redis::xreadgroup () — Method in class Redis
+ Read one or more messages using a consumer group.
+Redis::xrevrange () — Method in class Redis
+ Get a range of entries from a STREAM ke in reverse cronological order.
+Redis::xtrim () — Method in class Redis
+ Truncate a STREAM key in various ways.
+RedisCluster::xack () — Method in class RedisCluster
+
+RedisCluster::xadd () — Method in class RedisCluster
+
+RedisCluster::xclaim () — Method in class RedisCluster
+
+RedisCluster::xdel () — Method in class RedisCluster
+
+RedisCluster::xgroup () — Method in class RedisCluster
+
+RedisCluster::xinfo () — Method in class RedisCluster
+
+RedisCluster::xlen () — Method in class RedisCluster
+
+RedisCluster::xpending () — Method in class RedisCluster
+
+RedisCluster::xrange () — Method in class RedisCluster
+
+RedisCluster::xread () — Method in class RedisCluster
+
+RedisCluster::xreadgroup () — Method in class RedisCluster
+
+RedisCluster::xrevrange () — Method in class RedisCluster
+
+RedisCluster::xtrim () — Method in class RedisCluster
+ Z
+
+Redis::zmpop () — Method in class Redis
+ POP one or more of the highest or lowest scoring elements from one or more sorted sets.
+Redis::zAdd () — Method in class Redis
+ Add one or more elements and scores to a Redis sorted set.
+Redis::zCard () — Method in class Redis
+ Return the number of elements in a sorted set.
+Redis::zCount () — Method in class Redis
+ Count the number of members in a sorted set with scores inside a provided range.
+Redis::zIncrBy () — Method in class Redis
+ Create or increment the score of a member in a Redis sorted set
+Redis::zLexCount () — Method in class Redis
+ Count the number of elements in a sorted set whos members fall within the provided
+lexographical range.
+Redis::zMscore () — Method in class Redis
+ Retrieve the score of one or more members in a sorted set.
+Redis::zPopMax () — Method in class Redis
+ Pop one or more of the highest scoring elements from a sorted set.
+Redis::zPopMin () — Method in class Redis
+ Pop one or more of the lowest scoring elements from a sorted set.
+Redis::zRange () — Method in class Redis
+ Retrieve a range of elements of a sorted set between a start and end point.
+Redis::zRangeByLex () — Method in class Redis
+ Retrieve a range of elements from a sorted set by legographical range.
+Redis::zRangeByScore () — Method in class Redis
+ Retrieve a range of members from a sorted set by their score.
+Redis::zrangestore () — Method in class Redis
+ This command is similar to ZRANGE except that instead of returning the values directly
+it will store them in a destination key provided by the user
+Redis::zRandMember () — Method in class Redis
+ Retrieve one or more random members from a Redis sorted set.
+Redis::zRank () — Method in class Redis
+ Get the rank of a member of a sorted set, by score.
+Redis::zRem () — Method in class Redis
+ Remove one or more members from a Redis sorted set.
+Redis::zRemRangeByLex () — Method in class Redis
+ Remove zero or more elements from a Redis sorted set by legographical range.
+Redis::zRemRangeByRank () — Method in class Redis
+ Remove one or more members of a sorted set by their rank.
+Redis::zRemRangeByScore () — Method in class Redis
+ Remove one or more members of a sorted set by their score.
+Redis::zRevRange () — Method in class Redis
+ List the members of a Redis sorted set in reverse order
+Redis::zRevRangeByLex () — Method in class Redis
+ List members of a Redis sorted set within a legographical range, in reverse order.
+Redis::zRevRangeByScore () — Method in class Redis
+ List elements from a Redis sorted set by score, highest to lowest
+Redis::zRevRank () — Method in class Redis
+ Retrieve a member of a sorted set by reverse rank.
+Redis::zScore () — Method in class Redis
+ Get the score of a member of a sorted set.
+Redis::zdiff () — Method in class Redis
+ Given one or more sorted set key names, return every element that is in the first
+set but not any of the others.
+Redis::zdiffstore () — Method in class Redis
+ Store the difference of one or more sorted sets in a destination sorted set.
+Redis::zinter () — Method in class Redis
+ Compute the intersection of one or more sorted sets and return the members
+Redis::zintercard () — Method in class Redis
+ Similar to ZINTER but instead of returning the intersected values, this command returns the
+cardinality of the intersected set.
+Redis::zinterstore () — Method in class Redis
+ Compute the intersection of one ore more sorted sets storing the result in a new sorted set.
+Redis::zscan () — Method in class Redis
+ Scan the members of a sorted set incrementally, using a cursor
+Redis::zunion () — Method in class Redis
+ Retrieve the union of one or more sorted sets
+Redis::zunionstore () — Method in class Redis
+ Perform a union on one or more Redis sets and store the result in a destination sorted set.
+RedisArray::zscan () — Method in class RedisArray
+
+RedisCluster::zmpop () — Method in class RedisCluster
+
+RedisCluster::zadd () — Method in class RedisCluster
+
+RedisCluster::zcard () — Method in class RedisCluster
+
+RedisCluster::zcount () — Method in class RedisCluster
+
+RedisCluster::zincrby () — Method in class RedisCluster
+
+RedisCluster::zinterstore () — Method in class RedisCluster
+
+RedisCluster::zintercard () — Method in class RedisCluster
+
+RedisCluster::zlexcount () — Method in class RedisCluster
+
+RedisCluster::zpopmax () — Method in class RedisCluster
+
+RedisCluster::zpopmin () — Method in class RedisCluster
+
+RedisCluster::zrange () — Method in class RedisCluster
+
+RedisCluster::zrangestore () — Method in class RedisCluster
+
+RedisCluster::zrangebylex () — Method in class RedisCluster
+
+RedisCluster::zrangebyscore () — Method in class RedisCluster
+
+RedisCluster::zrank () — Method in class RedisCluster
+
+RedisCluster::zrem () — Method in class RedisCluster
+
+RedisCluster::zremrangebylex () — Method in class RedisCluster
+
+RedisCluster::zremrangebyrank () — Method in class RedisCluster
+
+RedisCluster::zremrangebyscore () — Method in class RedisCluster
+
+RedisCluster::zrevrange () — Method in class RedisCluster
+
+RedisCluster::zrevrangebylex () — Method in class RedisCluster
+
+RedisCluster::zrevrangebyscore () — Method in class RedisCluster
+
+RedisCluster::zrevrank () — Method in class RedisCluster
+
+RedisCluster::zscan () — Method in class RedisCluster
+
+RedisCluster::zscore () — Method in class RedisCluster
+
+RedisCluster::zunionstore () — Method in class RedisCluster
+ _
+
+Redis::__construct () — Method in class Redis
+ Create a new Redis instance. If passed sufficient information in the
+options array it is also possible to connect to an instance at the same
+time.
+Redis::__destruct () — Method in class Redis
+
+Redis::_compress () — Method in class Redis
+ Compress a value with the currently configured compressor as set with
+Redis::setOption().
+Redis::_uncompress () — Method in class Redis
+ Uncompress the provided argument that has been compressed with the
+currently configured compressor as set with Redis::setOption().
+Redis::_prefix () — Method in class Redis
+ Prefix the passed argument with the currently set key prefix as set
+with Redis::setOption().
+Redis::_serialize () — Method in class Redis
+ Serialize the provided value with the currently set serializer as set
+with Redis::setOption().
+Redis::_unserialize () — Method in class Redis
+ Unserialize the passed argument with the currently set serializer as set
+with Redis::setOption().
+Redis::_pack () — Method in class Redis
+ Pack the provided value with the configured serializer and compressor
+as set with Redis::setOption().
+Redis::_unpack () — Method in class Redis
+ Unpack the provided value with the configured compressor and serializer
+as set with Redis::setOption().
+RedisArray::__call () — Method in class RedisArray
+
+RedisArray::__construct () — Method in class RedisArray
+
+RedisArray::_continuum () — Method in class RedisArray
+
+RedisArray::_distributor () — Method in class RedisArray
+
+RedisArray::_function () — Method in class RedisArray
+
+RedisArray::_hosts () — Method in class RedisArray
+
+RedisArray::_instance () — Method in class RedisArray
+
+RedisArray::_rehash () — Method in class RedisArray
+
+RedisArray::_target () — Method in class RedisArray
+
+RedisCluster::__construct () — Method in class RedisCluster
+
+RedisCluster::_compress () — Method in class RedisCluster
+
+RedisCluster::_uncompress () — Method in class RedisCluster
+
+RedisCluster::_serialize () — Method in class RedisCluster
+
+RedisCluster::_unserialize () — Method in class RedisCluster
+
+RedisCluster::_pack () — Method in class RedisCluster
+
+RedisCluster::_unpack () — Method in class RedisCluster
+
+RedisCluster::_prefix () — Method in class RedisCluster
+
+RedisCluster::_masters () — Method in class RedisCluster
+
+RedisCluster::_redir () — Method in class RedisCluster
+
+RedisSentinel::__construct () — Method in class RedisSentinel
+
+
+
+
+
diff --git a/docs/doctum-search.json b/docs/doctum-search.json
new file mode 100644
index 0000000..23b29af
--- /dev/null
+++ b/docs/doctum-search.json
@@ -0,0 +1 @@
+{"items":[{"t":"C","n":"Redis","p":"Redis.html","d":"","f":{"n":"[Global Namespace]","p":"[Global_Namespace].html"}},{"t":"C","n":"RedisArray","p":"RedisArray.html","d":"","f":{"n":"[Global Namespace]","p":"[Global_Namespace].html"}},{"t":"C","n":"RedisCluster","p":"RedisCluster.html","d":"","f":{"n":"[Global Namespace]","p":"[Global_Namespace].html"}},{"t":"C","n":"RedisClusterException","p":"RedisClusterException.html","d":null,"f":{"n":"[Global Namespace]","p":"[Global_Namespace].html"}},{"t":"C","n":"RedisException","p":"RedisException.html","d":null,"f":{"n":"[Global Namespace]","p":"[Global_Namespace].html"}},{"t":"C","n":"RedisSentinel","p":"RedisSentinel.html","d":"","f":{"n":"[Global Namespace]","p":"[Global_Namespace].html"}},{"t":"M","n":"Redis::__construct","p":"Redis.html#method___construct","d":"Create a new Redis instance. If passed sufficient information in the\noptions array it is also possible to connect to an instance at the same\ntime.
"},{"t":"M","n":"Redis::__destruct","p":"Redis.html#method___destruct","d":null},{"t":"M","n":"Redis::_compress","p":"Redis.html#method__compress","d":"Compress a value with the currently configured compressor as set with\nRedis::setOption().
"},{"t":"M","n":"Redis::_uncompress","p":"Redis.html#method__uncompress","d":"Uncompress the provided argument that has been compressed with the\ncurrently configured compressor as set with Redis::setOption().
"},{"t":"M","n":"Redis::_prefix","p":"Redis.html#method__prefix","d":"Prefix the passed argument with the currently set key prefix as set\nwith Redis::setOption().
"},{"t":"M","n":"Redis::_serialize","p":"Redis.html#method__serialize","d":"Serialize the provided value with the currently set serializer as set\nwith Redis::setOption().
"},{"t":"M","n":"Redis::_unserialize","p":"Redis.html#method__unserialize","d":"Unserialize the passed argument with the currently set serializer as set\nwith Redis::setOption().
"},{"t":"M","n":"Redis::_pack","p":"Redis.html#method__pack","d":"Pack the provided value with the configured serializer and compressor\nas set with Redis::setOption().
"},{"t":"M","n":"Redis::_unpack","p":"Redis.html#method__unpack","d":"Unpack the provided value with the configured compressor and serializer\nas set with Redis::setOption().
"},{"t":"M","n":"Redis::acl","p":"Redis.html#method_acl","d":null},{"t":"M","n":"Redis::append","p":"Redis.html#method_append","d":"Append data to a Redis STRING key.
"},{"t":"M","n":"Redis::auth","p":"Redis.html#method_auth","d":"Authenticate a Redis connection after its been established.
"},{"t":"M","n":"Redis::bgSave","p":"Redis.html#method_bgSave","d":"Execute a save of the Redis database in the background.
"},{"t":"M","n":"Redis::bgrewriteaof","p":"Redis.html#method_bgrewriteaof","d":"Asynchronously rewrite Redis' append-only file
"},{"t":"M","n":"Redis::bitcount","p":"Redis.html#method_bitcount","d":"Count the number of set bits in a Redis string.
"},{"t":"M","n":"Redis::bitop","p":"Redis.html#method_bitop","d":null},{"t":"M","n":"Redis::bitpos","p":"Redis.html#method_bitpos","d":"Return the position of the first bit set to 0 or 1 in a string.
"},{"t":"M","n":"Redis::blPop","p":"Redis.html#method_blPop","d":"Pop an element off the beginning of a Redis list or lists, potentially blocking up to a specified\ntimeout. This method may be called in two distinct ways, of which examples are provided below.
"},{"t":"M","n":"Redis::brPop","p":"Redis.html#method_brPop","d":"Pop an element off of the end of a Redis list or lists, potentially blocking up to a specified timeout.
"},{"t":"M","n":"Redis::brpoplpush","p":"Redis.html#method_brpoplpush","d":"Pop an element from the end of a Redis list, pushing it to the beginning of another Redis list,\noptionally blocking up to a specified timeout.
"},{"t":"M","n":"Redis::bzPopMax","p":"Redis.html#method_bzPopMax","d":"POP the maximum scoring element off of one or more sorted sets, blocking up to a specified\ntimeout if no elements are available.
"},{"t":"M","n":"Redis::bzPopMin","p":"Redis.html#method_bzPopMin","d":"POP the minimum scoring element off of one or more sorted sets, blocking up to a specified timeout\nif no elements are available
"},{"t":"M","n":"Redis::bzmpop","p":"Redis.html#method_bzmpop","d":"POP one or more elements from one or more sorted sets, blocking up to a specified amount of time\nwhen no elements are available.
"},{"t":"M","n":"Redis::zmpop","p":"Redis.html#method_zmpop","d":"POP one or more of the highest or lowest scoring elements from one or more sorted sets.
"},{"t":"M","n":"Redis::blmpop","p":"Redis.html#method_blmpop","d":"Pop one or more elements from one or more Redis LISTs, blocking up to a specified timeout when\nno elements are available.
"},{"t":"M","n":"Redis::lmpop","p":"Redis.html#method_lmpop","d":"Pop one or more elements off of one or more Redis LISTs.
"},{"t":"M","n":"Redis::clearLastError","p":"Redis.html#method_clearLastError","d":"Reset any last error on the connection to NULL
"},{"t":"M","n":"Redis::client","p":"Redis.html#method_client","d":null},{"t":"M","n":"Redis::close","p":"Redis.html#method_close","d":null},{"t":"M","n":"Redis::command","p":"Redis.html#method_command","d":null},{"t":"M","n":"Redis::config","p":"Redis.html#method_config","d":"Execute the Redis CONFIG command in a variety of ways. What the command does in particular depends\non the $operation qualifier.
"},{"t":"M","n":"Redis::connect","p":"Redis.html#method_connect","d":null},{"t":"M","n":"Redis::copy","p":"Redis.html#method_copy","d":"Make a copy of a redis key.
"},{"t":"M","n":"Redis::dbSize","p":"Redis.html#method_dbSize","d":"Return the number of keys in the currently selected Redis database.
"},{"t":"M","n":"Redis::debug","p":"Redis.html#method_debug","d":null},{"t":"M","n":"Redis::decr","p":"Redis.html#method_decr","d":"Decrement a Redis integer by 1 or a provided value.
"},{"t":"M","n":"Redis::decrBy","p":"Redis.html#method_decrBy","d":"Decrement a redis integer by a value
"},{"t":"M","n":"Redis::del","p":"Redis.html#method_del","d":"Delete one or more keys from Redis.
"},{"t":"M","n":"Redis::delete","p":"Redis.html#method_delete","d":""},{"t":"M","n":"Redis::discard","p":"Redis.html#method_discard","d":"Discard a transaction currently in progress.
"},{"t":"M","n":"Redis::dump","p":"Redis.html#method_dump","d":"Dump Redis' internal binary representation of a key.
"},{"t":"M","n":"Redis::echo","p":"Redis.html#method_echo","d":"Have Redis repeat back an arbitrary string to the client.
"},{"t":"M","n":"Redis::eval","p":"Redis.html#method_eval","d":"Execute a LUA script on the redis server.
"},{"t":"M","n":"Redis::eval_ro","p":"Redis.html#method_eval_ro","d":"This is simply the read-only variant of eval, meaning the underlying script\nmay not modify data in redis.
"},{"t":"M","n":"Redis::evalsha","p":"Redis.html#method_evalsha","d":"Execute a LUA script on the server but instead of sending the script, send\nthe SHA1 hash of the script.
"},{"t":"M","n":"Redis::evalsha_ro","p":"Redis.html#method_evalsha_ro","d":"This is simply the read-only variant of evalsha, meaning the underlying script\nmay not modify data in redis.
"},{"t":"M","n":"Redis::exec","p":"Redis.html#method_exec","d":"Execute either a MULTI or PIPELINE block and return the array of replies.
"},{"t":"M","n":"Redis::exists","p":"Redis.html#method_exists","d":"Test if one or more keys exist.
"},{"t":"M","n":"Redis::expire","p":"Redis.html#method_expire","d":"Sets an expiration in seconds on the key in question. If connected to\nredis-server >= 7.0.0 you may send an additional "mode" argument which\nmodifies how the command will execute.
"},{"t":"M","n":"Redis::expireAt","p":"Redis.html#method_expireAt","d":"Set a key's expiration to a specific Unix timestamp in seconds. If\nconnected to Redis >= 7.0.0 you can pass an optional 'mode' argument.
"},{"t":"M","n":"Redis::failover","p":"Redis.html#method_failover","d":null},{"t":"M","n":"Redis::expiretime","p":"Redis.html#method_expiretime","d":"Get the expiration of a given key as a unix timestamp
"},{"t":"M","n":"Redis::pexpiretime","p":"Redis.html#method_pexpiretime","d":"Get the expriation timestamp of a given Redis key but in milliseconds.
"},{"t":"M","n":"Redis::flushAll","p":"Redis.html#method_flushAll","d":"Deletes every key in all Redis databases
"},{"t":"M","n":"Redis::flushDB","p":"Redis.html#method_flushDB","d":"Deletes all the keys of the currently selected database.
"},{"t":"M","n":"Redis::geoadd","p":"Redis.html#method_geoadd","d":null},{"t":"M","n":"Redis::geodist","p":"Redis.html#method_geodist","d":null},{"t":"M","n":"Redis::geohash","p":"Redis.html#method_geohash","d":null},{"t":"M","n":"Redis::geopos","p":"Redis.html#method_geopos","d":null},{"t":"M","n":"Redis::georadius","p":"Redis.html#method_georadius","d":null},{"t":"M","n":"Redis::georadius_ro","p":"Redis.html#method_georadius_ro","d":null},{"t":"M","n":"Redis::georadiusbymember","p":"Redis.html#method_georadiusbymember","d":null},{"t":"M","n":"Redis::georadiusbymember_ro","p":"Redis.html#method_georadiusbymember_ro","d":null},{"t":"M","n":"Redis::geosearch","p":"Redis.html#method_geosearch","d":null},{"t":"M","n":"Redis::geosearchstore","p":"Redis.html#method_geosearchstore","d":null},{"t":"M","n":"Redis::get","p":"Redis.html#method_get","d":null},{"t":"M","n":"Redis::getAuth","p":"Redis.html#method_getAuth","d":"Get the authentication information on the connection, if any.
"},{"t":"M","n":"Redis::getBit","p":"Redis.html#method_getBit","d":null},{"t":"M","n":"Redis::getEx","p":"Redis.html#method_getEx","d":null},{"t":"M","n":"Redis::getDBNum","p":"Redis.html#method_getDBNum","d":null},{"t":"M","n":"Redis::getDel","p":"Redis.html#method_getDel","d":null},{"t":"M","n":"Redis::getHost","p":"Redis.html#method_getHost","d":"Return the host or Unix socket we are connected to.
"},{"t":"M","n":"Redis::getLastError","p":"Redis.html#method_getLastError","d":"Get the last error returned to us from Redis, if any.
"},{"t":"M","n":"Redis::getMode","p":"Redis.html#method_getMode","d":"Returns whether the connection is in ATOMIC, MULTI, or PIPELINE mode
"},{"t":"M","n":"Redis::getOption","p":"Redis.html#method_getOption","d":"Retrieve the value of a configuration setting as set by Redis::setOption()
"},{"t":"M","n":"Redis::getPersistentID","p":"Redis.html#method_getPersistentID","d":"Get the persistent connection ID, if there is one.
"},{"t":"M","n":"Redis::getPort","p":"Redis.html#method_getPort","d":"Get the port we are connected to. This number will be zero if we are connected to a unix socket.
"},{"t":"M","n":"Redis::getRange","p":"Redis.html#method_getRange","d":"Retrieve a substring of a string by index.
"},{"t":"M","n":"Redis::lcs","p":"Redis.html#method_lcs","d":"Get the longest common subsequence between two string keys.
"},{"t":"M","n":"Redis::getReadTimeout","p":"Redis.html#method_getReadTimeout","d":"Get the currently set read timeout on the connection.
"},{"t":"M","n":"Redis::getset","p":"Redis.html#method_getset","d":"Sets a key and returns any previously set value, if the key already existed.
"},{"t":"M","n":"Redis::getTimeout","p":"Redis.html#method_getTimeout","d":"Retrieve any set connection timeout
"},{"t":"M","n":"Redis::getTransferredBytes","p":"Redis.html#method_getTransferredBytes","d":null},{"t":"M","n":"Redis::hDel","p":"Redis.html#method_hDel","d":"Remove one or more fields from a hash.
"},{"t":"M","n":"Redis::hExists","p":"Redis.html#method_hExists","d":"Checks whether a field exists in a hash.
"},{"t":"M","n":"Redis::hGet","p":"Redis.html#method_hGet","d":null},{"t":"M","n":"Redis::hGetAll","p":"Redis.html#method_hGetAll","d":"Read every field and value from a hash.
"},{"t":"M","n":"Redis::hIncrBy","p":"Redis.html#method_hIncrBy","d":"Increment a hash field's value by an integer
"},{"t":"M","n":"Redis::hIncrByFloat","p":"Redis.html#method_hIncrByFloat","d":"Increment a hash field by a floating point value
"},{"t":"M","n":"Redis::hKeys","p":"Redis.html#method_hKeys","d":"Retrieve all of the fields of a hash.
"},{"t":"M","n":"Redis::hLen","p":"Redis.html#method_hLen","d":"Get the number of fields in a hash.
"},{"t":"M","n":"Redis::hMget","p":"Redis.html#method_hMget","d":"Get one or more fields from a hash.
"},{"t":"M","n":"Redis::hMset","p":"Redis.html#method_hMset","d":"Add or update one or more hash fields and values
"},{"t":"M","n":"Redis::hRandField","p":"Redis.html#method_hRandField","d":"Get one or more random field from a hash.
"},{"t":"M","n":"Redis::hSet","p":"Redis.html#method_hSet","d":null},{"t":"M","n":"Redis::hSetNx","p":"Redis.html#method_hSetNx","d":"Set a hash field and value, but only if that field does not exist
"},{"t":"M","n":"Redis::hStrLen","p":"Redis.html#method_hStrLen","d":"Get the string length of a hash field
"},{"t":"M","n":"Redis::hVals","p":"Redis.html#method_hVals","d":"Get all of the values from a hash.
"},{"t":"M","n":"Redis::hscan","p":"Redis.html#method_hscan","d":"Iterate over the fields and values of a hash in an incremental fashion.
"},{"t":"M","n":"Redis::incr","p":"Redis.html#method_incr","d":"Increment a key's value, optionally by a specifc amount.
"},{"t":"M","n":"Redis::incrBy","p":"Redis.html#method_incrBy","d":"Increment a key by a specific integer value
"},{"t":"M","n":"Redis::incrByFloat","p":"Redis.html#method_incrByFloat","d":"Increment a numeric key by a floating point value.
"},{"t":"M","n":"Redis::info","p":"Redis.html#method_info","d":"Retrieve information about the connected redis-server. If no arguments are passed to\nthis function, redis will return every info field. Alternatively you may pass a specific\nsection you want returned (e.g. 'server', or 'memory') to receive only information pertaining\nto that section.
"},{"t":"M","n":"Redis::isConnected","p":"Redis.html#method_isConnected","d":"Check if we are currently connected to a Redis instance.
"},{"t":"M","n":"Redis::keys","p":"Redis.html#method_keys","d":""},{"t":"M","n":"Redis::lInsert","p":"Redis.html#method_lInsert","d":""},{"t":"M","n":"Redis::lLen","p":"Redis.html#method_lLen","d":null},{"t":"M","n":"Redis::lMove","p":"Redis.html#method_lMove","d":null},{"t":"M","n":"Redis::lPop","p":"Redis.html#method_lPop","d":null},{"t":"M","n":"Redis::lPos","p":"Redis.html#method_lPos","d":null},{"t":"M","n":"Redis::lPush","p":"Redis.html#method_lPush","d":""},{"t":"M","n":"Redis::rPush","p":"Redis.html#method_rPush","d":""},{"t":"M","n":"Redis::lPushx","p":"Redis.html#method_lPushx","d":""},{"t":"M","n":"Redis::rPushx","p":"Redis.html#method_rPushx","d":""},{"t":"M","n":"Redis::lSet","p":"Redis.html#method_lSet","d":null},{"t":"M","n":"Redis::lastSave","p":"Redis.html#method_lastSave","d":null},{"t":"M","n":"Redis::lindex","p":"Redis.html#method_lindex","d":null},{"t":"M","n":"Redis::lrange","p":"Redis.html#method_lrange","d":null},{"t":"M","n":"Redis::lrem","p":"Redis.html#method_lrem","d":""},{"t":"M","n":"Redis::ltrim","p":"Redis.html#method_ltrim","d":null},{"t":"M","n":"Redis::mget","p":"Redis.html#method_mget","d":""},{"t":"M","n":"Redis::migrate","p":"Redis.html#method_migrate","d":null},{"t":"M","n":"Redis::move","p":"Redis.html#method_move","d":null},{"t":"M","n":"Redis::mset","p":"Redis.html#method_mset","d":null},{"t":"M","n":"Redis::msetnx","p":"Redis.html#method_msetnx","d":null},{"t":"M","n":"Redis::multi","p":"Redis.html#method_multi","d":null},{"t":"M","n":"Redis::object","p":"Redis.html#method_object","d":null},{"t":"M","n":"Redis::open","p":"Redis.html#method_open","d":""},{"t":"M","n":"Redis::pconnect","p":"Redis.html#method_pconnect","d":null},{"t":"M","n":"Redis::persist","p":"Redis.html#method_persist","d":null},{"t":"M","n":"Redis::pexpire","p":"Redis.html#method_pexpire","d":"Sets an expiration in milliseconds on a given key. If connected to Redis >= 7.0.0\nyou can pass an optional mode argument that modifies how the command will execute.
"},{"t":"M","n":"Redis::pexpireAt","p":"Redis.html#method_pexpireAt","d":"Set a key's expiration to a specific Unix Timestamp in milliseconds. If connected to\nRedis >= 7.0.0 you can pass an optional 'mode' argument.
"},{"t":"M","n":"Redis::pfadd","p":"Redis.html#method_pfadd","d":"Add one or more elements to a Redis HyperLogLog key
"},{"t":"M","n":"Redis::pfcount","p":"Redis.html#method_pfcount","d":"Retrieve the cardinality of a Redis HyperLogLog key.
"},{"t":"M","n":"Redis::pfmerge","p":"Redis.html#method_pfmerge","d":"Merge one or more source HyperLogLog sets into a destination set.
"},{"t":"M","n":"Redis::ping","p":"Redis.html#method_ping","d":"PING the redis server with an optional string argument.
"},{"t":"M","n":"Redis::pipeline","p":"Redis.html#method_pipeline","d":"Enter into pipeline mode.
"},{"t":"M","n":"Redis::popen","p":"Redis.html#method_popen","d":""},{"t":"M","n":"Redis::psetex","p":"Redis.html#method_psetex","d":""},{"t":"M","n":"Redis::psubscribe","p":"Redis.html#method_psubscribe","d":"Subscribe to one or more glob-style patterns
"},{"t":"M","n":"Redis::pttl","p":"Redis.html#method_pttl","d":"Get a keys time to live in milliseconds.
"},{"t":"M","n":"Redis::publish","p":"Redis.html#method_publish","d":"Publish a message to a pubsub channel
"},{"t":"M","n":"Redis::pubsub","p":"Redis.html#method_pubsub","d":null},{"t":"M","n":"Redis::punsubscribe","p":"Redis.html#method_punsubscribe","d":"Unsubscribe from one or more channels by pattern
"},{"t":"M","n":"Redis::rPop","p":"Redis.html#method_rPop","d":"Pop one or more elements from the end of a list.
"},{"t":"M","n":"Redis::randomKey","p":"Redis.html#method_randomKey","d":"Return a random key from the current database
"},{"t":"M","n":"Redis::rawcommand","p":"Redis.html#method_rawcommand","d":"Execute any arbitrary Redis command by name.
"},{"t":"M","n":"Redis::rename","p":"Redis.html#method_rename","d":"Unconditionally rename a key from $old_name to $new_name
"},{"t":"M","n":"Redis::renameNx","p":"Redis.html#method_renameNx","d":"Renames $key_src to $key_dst but only if newkey does not exist.
"},{"t":"M","n":"Redis::reset","p":"Redis.html#method_reset","d":"Reset the state of the connection.
"},{"t":"M","n":"Redis::restore","p":"Redis.html#method_restore","d":"Restore a key by the binary payload generated by the DUMP command.
"},{"t":"M","n":"Redis::role","p":"Redis.html#method_role","d":"Query whether the connected instance is a primary or replica
"},{"t":"M","n":"Redis::rpoplpush","p":"Redis.html#method_rpoplpush","d":"Atomically pop an element off the end of a Redis LIST and push it to the beginning of\nanother.
"},{"t":"M","n":"Redis::sAdd","p":"Redis.html#method_sAdd","d":"Add one or more values to a Redis SET key.
"},{"t":"M","n":"Redis::sAddArray","p":"Redis.html#method_sAddArray","d":"Add one ore more values to a Redis SET key. This is an alternative to Redis::sadd() but\ninstead of being variadic, takes a single array of values.
"},{"t":"M","n":"Redis::sDiff","p":"Redis.html#method_sDiff","d":"Given one or more Redis SETS, this command returns all of the members from the first\nset that are not in any subsequent set.
"},{"t":"M","n":"Redis::sDiffStore","p":"Redis.html#method_sDiffStore","d":"This method performs the same operation as SDIFF except it stores the resulting diff\nvalues in a specified destination key.
"},{"t":"M","n":"Redis::sInter","p":"Redis.html#method_sInter","d":"Given one or more Redis SET keys, this command will return all of the elements that are\nin every one.
"},{"t":"M","n":"Redis::sintercard","p":"Redis.html#method_sintercard","d":"Compute the intersection of one or more sets and return the cardinality of the result.
"},{"t":"M","n":"Redis::sInterStore","p":"Redis.html#method_sInterStore","d":"Perform the intersection of one or more Redis SETs, storing the result in a destination\nkey, rather than returning them.
"},{"t":"M","n":"Redis::sMembers","p":"Redis.html#method_sMembers","d":"Retrieve every member from a set key.
"},{"t":"M","n":"Redis::sMisMember","p":"Redis.html#method_sMisMember","d":"Check if one or more values are members of a set.
"},{"t":"M","n":"Redis::sMove","p":"Redis.html#method_sMove","d":"Pop a member from one set and push it onto another. This command will create the\ndestination set if it does not currently exist.
"},{"t":"M","n":"Redis::sPop","p":"Redis.html#method_sPop","d":"Remove one or more elements from a set.
"},{"t":"M","n":"Redis::sRandMember","p":"Redis.html#method_sRandMember","d":"Retrieve one or more random members of a set.
"},{"t":"M","n":"Redis::sUnion","p":"Redis.html#method_sUnion","d":"Returns the union of one or more Redis SET keys.
"},{"t":"M","n":"Redis::sUnionStore","p":"Redis.html#method_sUnionStore","d":"Perform a union of one or more Redis SET keys and store the result in a new set
"},{"t":"M","n":"Redis::save","p":"Redis.html#method_save","d":"Persist the Redis database to disk. This command will block the server until the save is\ncompleted. For a nonblocking alternative, see Redis::bgsave().
"},{"t":"M","n":"Redis::scan","p":"Redis.html#method_scan","d":"Incrementally scan the Redis keyspace, with optional pattern and type matching.
"},{"t":"M","n":"Redis::scard","p":"Redis.html#method_scard","d":"Retrieve the number of members in a Redis set.
"},{"t":"M","n":"Redis::script","p":"Redis.html#method_script","d":"An administrative command used to interact with LUA scripts stored on the server.
"},{"t":"M","n":"Redis::select","p":"Redis.html#method_select","d":"Select a specific Redis database.
"},{"t":"M","n":"Redis::set","p":"Redis.html#method_set","d":"Create or set a Redis STRING key to a value.
"},{"t":"M","n":"Redis::setBit","p":"Redis.html#method_setBit","d":"Set a specific bit in a Redis string to zero or one
"},{"t":"M","n":"Redis::setRange","p":"Redis.html#method_setRange","d":"Update or append to a Redis string at a specific starting index
"},{"t":"M","n":"Redis::setOption","p":"Redis.html#method_setOption","d":"Set a configurable option on the Redis object.
"},{"t":"M","n":"Redis::setex","p":"Redis.html#method_setex","d":"Set a Redis STRING key with a specific expiration in seconds.
"},{"t":"M","n":"Redis::setnx","p":"Redis.html#method_setnx","d":"Set a key to a value, but only if that key does not already exist.
"},{"t":"M","n":"Redis::sismember","p":"Redis.html#method_sismember","d":"Check whether a given value is the member of a Redis SET.
"},{"t":"M","n":"Redis::slaveof","p":"Redis.html#method_slaveof","d":"Turn a redis instance into a replica of another or promote a replica\nto a primary.
"},{"t":"M","n":"Redis::replicaof","p":"Redis.html#method_replicaof","d":"Used to turn a Redis instance into a replica of another, or to remove\nreplica status promoting the instance to a primary.
"},{"t":"M","n":"Redis::touch","p":"Redis.html#method_touch","d":"Update one or more keys last modified metadata.
"},{"t":"M","n":"Redis::slowlog","p":"Redis.html#method_slowlog","d":"Interact with Redis' slowlog functionality in various ways, depending\non the value of 'operation'.
"},{"t":"M","n":"Redis::sort","p":"Redis.html#method_sort","d":"Sort the contents of a Redis key in various ways.
"},{"t":"M","n":"Redis::sort_ro","p":"Redis.html#method_sort_ro","d":"This is simply a read-only variant of the sort command
"},{"t":"M","n":"Redis::sortAsc","p":"Redis.html#method_sortAsc","d":""},{"t":"M","n":"Redis::sortAscAlpha","p":"Redis.html#method_sortAscAlpha","d":""},{"t":"M","n":"Redis::sortDesc","p":"Redis.html#method_sortDesc","d":""},{"t":"M","n":"Redis::sortDescAlpha","p":"Redis.html#method_sortDescAlpha","d":""},{"t":"M","n":"Redis::srem","p":"Redis.html#method_srem","d":"Remove one or more values from a Redis SET key.
"},{"t":"M","n":"Redis::sscan","p":"Redis.html#method_sscan","d":"Scan the members of a redis SET key.
"},{"t":"M","n":"Redis::strlen","p":"Redis.html#method_strlen","d":"Retrieve the length of a Redis STRING key.
"},{"t":"M","n":"Redis::subscribe","p":"Redis.html#method_subscribe","d":"Subscribe to one or more Redis pubsub channels.
"},{"t":"M","n":"Redis::swapdb","p":"Redis.html#method_swapdb","d":"Atomically swap two Redis databases so that all of the keys in the source database will\nnow be in the destination database and vice-versa.
"},{"t":"M","n":"Redis::time","p":"Redis.html#method_time","d":"Retrieve the server time from the connected Redis instance.
"},{"t":"M","n":"Redis::ttl","p":"Redis.html#method_ttl","d":"Get the amount of time a Redis key has before it will expire, in seconds.
"},{"t":"M","n":"Redis::type","p":"Redis.html#method_type","d":"Get the type of a given Redis key.
"},{"t":"M","n":"Redis::unlink","p":"Redis.html#method_unlink","d":"Delete one or more keys from the Redis database. Unlike this operation, the actual\ndeletion is asynchronous, meaning it is safe to delete large keys without fear of\nRedis blocking for a long period of time.
"},{"t":"M","n":"Redis::unsubscribe","p":"Redis.html#method_unsubscribe","d":"Unsubscribe from one or more subscribed channels.
"},{"t":"M","n":"Redis::unwatch","p":"Redis.html#method_unwatch","d":"Remove any previously WATCH'ed keys in a transaction.
"},{"t":"M","n":"Redis::watch","p":"Redis.html#method_watch","d":""},{"t":"M","n":"Redis::wait","p":"Redis.html#method_wait","d":"Block the client up to the provided timeout until a certain number of replicas have confirmed\nrecieving them.
"},{"t":"M","n":"Redis::xack","p":"Redis.html#method_xack","d":null},{"t":"M","n":"Redis::xadd","p":"Redis.html#method_xadd","d":"Append a message to a stream.
"},{"t":"M","n":"Redis::xautoclaim","p":"Redis.html#method_xautoclaim","d":null},{"t":"M","n":"Redis::xclaim","p":"Redis.html#method_xclaim","d":null},{"t":"M","n":"Redis::xdel","p":"Redis.html#method_xdel","d":"Remove one or more specific IDs from a stream.
"},{"t":"M","n":"Redis::xgroup","p":"Redis.html#method_xgroup","d":"XGROUP"},{"t":"M","n":"Redis::xinfo","p":"Redis.html#method_xinfo","d":"Retrieve information about a stream key.
"},{"t":"M","n":"Redis::xlen","p":"Redis.html#method_xlen","d":"Get the number of messages in a Redis STREAM key.
"},{"t":"M","n":"Redis::xpending","p":"Redis.html#method_xpending","d":"Interact with stream messages that have been consumed by a consumer group but not yet\nacknowledged with XACK.
"},{"t":"M","n":"Redis::xrange","p":"Redis.html#method_xrange","d":"Get a range of entries from a STREAM key.
"},{"t":"M","n":"Redis::xread","p":"Redis.html#method_xread","d":"Consume one or more unconsumed elements in one or more streams.
"},{"t":"M","n":"Redis::xreadgroup","p":"Redis.html#method_xreadgroup","d":"Read one or more messages using a consumer group.
"},{"t":"M","n":"Redis::xrevrange","p":"Redis.html#method_xrevrange","d":"Get a range of entries from a STREAM ke in reverse cronological order.
"},{"t":"M","n":"Redis::xtrim","p":"Redis.html#method_xtrim","d":"Truncate a STREAM key in various ways.
"},{"t":"M","n":"Redis::zAdd","p":"Redis.html#method_zAdd","d":"Add one or more elements and scores to a Redis sorted set.
"},{"t":"M","n":"Redis::zCard","p":"Redis.html#method_zCard","d":"Return the number of elements in a sorted set.
"},{"t":"M","n":"Redis::zCount","p":"Redis.html#method_zCount","d":"Count the number of members in a sorted set with scores inside a provided range.
"},{"t":"M","n":"Redis::zIncrBy","p":"Redis.html#method_zIncrBy","d":"Create or increment the score of a member in a Redis sorted set
"},{"t":"M","n":"Redis::zLexCount","p":"Redis.html#method_zLexCount","d":"Count the number of elements in a sorted set whos members fall within the provided\nlexographical range.
"},{"t":"M","n":"Redis::zMscore","p":"Redis.html#method_zMscore","d":"Retrieve the score of one or more members in a sorted set.
"},{"t":"M","n":"Redis::zPopMax","p":"Redis.html#method_zPopMax","d":"Pop one or more of the highest scoring elements from a sorted set.
"},{"t":"M","n":"Redis::zPopMin","p":"Redis.html#method_zPopMin","d":"Pop one or more of the lowest scoring elements from a sorted set.
"},{"t":"M","n":"Redis::zRange","p":"Redis.html#method_zRange","d":"Retrieve a range of elements of a sorted set between a start and end point.
"},{"t":"M","n":"Redis::zRangeByLex","p":"Redis.html#method_zRangeByLex","d":"Retrieve a range of elements from a sorted set by legographical range.
"},{"t":"M","n":"Redis::zRangeByScore","p":"Redis.html#method_zRangeByScore","d":"Retrieve a range of members from a sorted set by their score.
"},{"t":"M","n":"Redis::zrangestore","p":"Redis.html#method_zrangestore","d":"This command is similar to ZRANGE except that instead of returning the values directly\nit will store them in a destination key provided by the user
"},{"t":"M","n":"Redis::zRandMember","p":"Redis.html#method_zRandMember","d":"Retrieve one or more random members from a Redis sorted set.
"},{"t":"M","n":"Redis::zRank","p":"Redis.html#method_zRank","d":"Get the rank of a member of a sorted set, by score.
"},{"t":"M","n":"Redis::zRem","p":"Redis.html#method_zRem","d":"Remove one or more members from a Redis sorted set.
"},{"t":"M","n":"Redis::zRemRangeByLex","p":"Redis.html#method_zRemRangeByLex","d":"Remove zero or more elements from a Redis sorted set by legographical range.
"},{"t":"M","n":"Redis::zRemRangeByRank","p":"Redis.html#method_zRemRangeByRank","d":"Remove one or more members of a sorted set by their rank.
"},{"t":"M","n":"Redis::zRemRangeByScore","p":"Redis.html#method_zRemRangeByScore","d":"Remove one or more members of a sorted set by their score.
"},{"t":"M","n":"Redis::zRevRange","p":"Redis.html#method_zRevRange","d":"List the members of a Redis sorted set in reverse order
"},{"t":"M","n":"Redis::zRevRangeByLex","p":"Redis.html#method_zRevRangeByLex","d":"List members of a Redis sorted set within a legographical range, in reverse order.
"},{"t":"M","n":"Redis::zRevRangeByScore","p":"Redis.html#method_zRevRangeByScore","d":"List elements from a Redis sorted set by score, highest to lowest
"},{"t":"M","n":"Redis::zRevRank","p":"Redis.html#method_zRevRank","d":"Retrieve a member of a sorted set by reverse rank.
"},{"t":"M","n":"Redis::zScore","p":"Redis.html#method_zScore","d":"Get the score of a member of a sorted set.
"},{"t":"M","n":"Redis::zdiff","p":"Redis.html#method_zdiff","d":"Given one or more sorted set key names, return every element that is in the first\nset but not any of the others.
"},{"t":"M","n":"Redis::zdiffstore","p":"Redis.html#method_zdiffstore","d":"Store the difference of one or more sorted sets in a destination sorted set.
"},{"t":"M","n":"Redis::zinter","p":"Redis.html#method_zinter","d":"Compute the intersection of one or more sorted sets and return the members
"},{"t":"M","n":"Redis::zintercard","p":"Redis.html#method_zintercard","d":"Similar to ZINTER but instead of returning the intersected values, this command returns the\ncardinality of the intersected set.
"},{"t":"M","n":"Redis::zinterstore","p":"Redis.html#method_zinterstore","d":"Compute the intersection of one ore more sorted sets storing the result in a new sorted set.
"},{"t":"M","n":"Redis::zscan","p":"Redis.html#method_zscan","d":"Scan the members of a sorted set incrementally, using a cursor
"},{"t":"M","n":"Redis::zunion","p":"Redis.html#method_zunion","d":"Retrieve the union of one or more sorted sets
"},{"t":"M","n":"Redis::zunionstore","p":"Redis.html#method_zunionstore","d":"Perform a union on one or more Redis sets and store the result in a destination sorted set.
"},{"t":"M","n":"RedisArray::__call","p":"RedisArray.html#method___call","d":null},{"t":"M","n":"RedisArray::__construct","p":"RedisArray.html#method___construct","d":null},{"t":"M","n":"RedisArray::_continuum","p":"RedisArray.html#method__continuum","d":null},{"t":"M","n":"RedisArray::_distributor","p":"RedisArray.html#method__distributor","d":null},{"t":"M","n":"RedisArray::_function","p":"RedisArray.html#method__function","d":null},{"t":"M","n":"RedisArray::_hosts","p":"RedisArray.html#method__hosts","d":null},{"t":"M","n":"RedisArray::_instance","p":"RedisArray.html#method__instance","d":null},{"t":"M","n":"RedisArray::_rehash","p":"RedisArray.html#method__rehash","d":null},{"t":"M","n":"RedisArray::_target","p":"RedisArray.html#method__target","d":null},{"t":"M","n":"RedisArray::bgsave","p":"RedisArray.html#method_bgsave","d":null},{"t":"M","n":"RedisArray::del","p":"RedisArray.html#method_del","d":null},{"t":"M","n":"RedisArray::discard","p":"RedisArray.html#method_discard","d":null},{"t":"M","n":"RedisArray::exec","p":"RedisArray.html#method_exec","d":null},{"t":"M","n":"RedisArray::flushall","p":"RedisArray.html#method_flushall","d":null},{"t":"M","n":"RedisArray::flushdb","p":"RedisArray.html#method_flushdb","d":null},{"t":"M","n":"RedisArray::getOption","p":"RedisArray.html#method_getOption","d":null},{"t":"M","n":"RedisArray::hscan","p":"RedisArray.html#method_hscan","d":null},{"t":"M","n":"RedisArray::info","p":"RedisArray.html#method_info","d":null},{"t":"M","n":"RedisArray::keys","p":"RedisArray.html#method_keys","d":null},{"t":"M","n":"RedisArray::mget","p":"RedisArray.html#method_mget","d":null},{"t":"M","n":"RedisArray::mset","p":"RedisArray.html#method_mset","d":null},{"t":"M","n":"RedisArray::multi","p":"RedisArray.html#method_multi","d":null},{"t":"M","n":"RedisArray::ping","p":"RedisArray.html#method_ping","d":null},{"t":"M","n":"RedisArray::save","p":"RedisArray.html#method_save","d":null},{"t":"M","n":"RedisArray::scan","p":"RedisArray.html#method_scan","d":null},{"t":"M","n":"RedisArray::select","p":"RedisArray.html#method_select","d":null},{"t":"M","n":"RedisArray::setOption","p":"RedisArray.html#method_setOption","d":null},{"t":"M","n":"RedisArray::sscan","p":"RedisArray.html#method_sscan","d":null},{"t":"M","n":"RedisArray::unlink","p":"RedisArray.html#method_unlink","d":null},{"t":"M","n":"RedisArray::unwatch","p":"RedisArray.html#method_unwatch","d":null},{"t":"M","n":"RedisArray::zscan","p":"RedisArray.html#method_zscan","d":null},{"t":"M","n":"RedisCluster::__construct","p":"RedisCluster.html#method___construct","d":null},{"t":"M","n":"RedisCluster::_compress","p":"RedisCluster.html#method__compress","d":""},{"t":"M","n":"RedisCluster::_uncompress","p":"RedisCluster.html#method__uncompress","d":""},{"t":"M","n":"RedisCluster::_serialize","p":"RedisCluster.html#method__serialize","d":""},{"t":"M","n":"RedisCluster::_unserialize","p":"RedisCluster.html#method__unserialize","d":""},{"t":"M","n":"RedisCluster::_pack","p":"RedisCluster.html#method__pack","d":""},{"t":"M","n":"RedisCluster::_unpack","p":"RedisCluster.html#method__unpack","d":""},{"t":"M","n":"RedisCluster::_prefix","p":"RedisCluster.html#method__prefix","d":""},{"t":"M","n":"RedisCluster::_masters","p":"RedisCluster.html#method__masters","d":null},{"t":"M","n":"RedisCluster::_redir","p":"RedisCluster.html#method__redir","d":null},{"t":"M","n":"RedisCluster::acl","p":"RedisCluster.html#method_acl","d":""},{"t":"M","n":"RedisCluster::append","p":"RedisCluster.html#method_append","d":""},{"t":"M","n":"RedisCluster::bgrewriteaof","p":"RedisCluster.html#method_bgrewriteaof","d":""},{"t":"M","n":"RedisCluster::bgsave","p":"RedisCluster.html#method_bgsave","d":""},{"t":"M","n":"RedisCluster::bitcount","p":"RedisCluster.html#method_bitcount","d":""},{"t":"M","n":"RedisCluster::bitop","p":"RedisCluster.html#method_bitop","d":""},{"t":"M","n":"RedisCluster::bitpos","p":"RedisCluster.html#method_bitpos","d":"Return the position of the first bit set to 0 or 1 in a string.
"},{"t":"M","n":"RedisCluster::blpop","p":"RedisCluster.html#method_blpop","d":"See Redis::blpop()
"},{"t":"M","n":"RedisCluster::brpop","p":"RedisCluster.html#method_brpop","d":"See Redis::brpop()
"},{"t":"M","n":"RedisCluster::brpoplpush","p":"RedisCluster.html#method_brpoplpush","d":"See Redis::brpoplpush()
"},{"t":"M","n":"RedisCluster::bzpopmax","p":"RedisCluster.html#method_bzpopmax","d":""},{"t":"M","n":"RedisCluster::bzpopmin","p":"RedisCluster.html#method_bzpopmin","d":""},{"t":"M","n":"RedisCluster::bzmpop","p":"RedisCluster.html#method_bzmpop","d":""},{"t":"M","n":"RedisCluster::zmpop","p":"RedisCluster.html#method_zmpop","d":""},{"t":"M","n":"RedisCluster::blmpop","p":"RedisCluster.html#method_blmpop","d":""},{"t":"M","n":"RedisCluster::lmpop","p":"RedisCluster.html#method_lmpop","d":""},{"t":"M","n":"RedisCluster::clearlasterror","p":"RedisCluster.html#method_clearlasterror","d":""},{"t":"M","n":"RedisCluster::client","p":"RedisCluster.html#method_client","d":""},{"t":"M","n":"RedisCluster::close","p":"RedisCluster.html#method_close","d":""},{"t":"M","n":"RedisCluster::cluster","p":"RedisCluster.html#method_cluster","d":""},{"t":"M","n":"RedisCluster::command","p":"RedisCluster.html#method_command","d":""},{"t":"M","n":"RedisCluster::config","p":"RedisCluster.html#method_config","d":""},{"t":"M","n":"RedisCluster::dbsize","p":"RedisCluster.html#method_dbsize","d":""},{"t":"M","n":"RedisCluster::decr","p":"RedisCluster.html#method_decr","d":""},{"t":"M","n":"RedisCluster::decrby","p":"RedisCluster.html#method_decrby","d":""},{"t":"M","n":"RedisCluster::decrbyfloat","p":"RedisCluster.html#method_decrbyfloat","d":""},{"t":"M","n":"RedisCluster::del","p":"RedisCluster.html#method_del","d":""},{"t":"M","n":"RedisCluster::discard","p":"RedisCluster.html#method_discard","d":""},{"t":"M","n":"RedisCluster::dump","p":"RedisCluster.html#method_dump","d":""},{"t":"M","n":"RedisCluster::echo","p":"RedisCluster.html#method_echo","d":""},{"t":"M","n":"RedisCluster::eval","p":"RedisCluster.html#method_eval","d":""},{"t":"M","n":"RedisCluster::eval_ro","p":"RedisCluster.html#method_eval_ro","d":""},{"t":"M","n":"RedisCluster::evalsha","p":"RedisCluster.html#method_evalsha","d":""},{"t":"M","n":"RedisCluster::evalsha_ro","p":"RedisCluster.html#method_evalsha_ro","d":""},{"t":"M","n":"RedisCluster::exec","p":"RedisCluster.html#method_exec","d":""},{"t":"M","n":"RedisCluster::exists","p":"RedisCluster.html#method_exists","d":""},{"t":"M","n":"RedisCluster::touch","p":"RedisCluster.html#method_touch","d":""},{"t":"M","n":"RedisCluster::expire","p":"RedisCluster.html#method_expire","d":""},{"t":"M","n":"RedisCluster::expireat","p":"RedisCluster.html#method_expireat","d":""},{"t":"M","n":"RedisCluster::expiretime","p":"RedisCluster.html#method_expiretime","d":""},{"t":"M","n":"RedisCluster::pexpiretime","p":"RedisCluster.html#method_pexpiretime","d":""},{"t":"M","n":"RedisCluster::flushall","p":"RedisCluster.html#method_flushall","d":""},{"t":"M","n":"RedisCluster::flushdb","p":"RedisCluster.html#method_flushdb","d":""},{"t":"M","n":"RedisCluster::geoadd","p":"RedisCluster.html#method_geoadd","d":""},{"t":"M","n":"RedisCluster::geodist","p":"RedisCluster.html#method_geodist","d":""},{"t":"M","n":"RedisCluster::geohash","p":"RedisCluster.html#method_geohash","d":""},{"t":"M","n":"RedisCluster::geopos","p":"RedisCluster.html#method_geopos","d":""},{"t":"M","n":"RedisCluster::georadius","p":"RedisCluster.html#method_georadius","d":""},{"t":"M","n":"RedisCluster::georadius_ro","p":"RedisCluster.html#method_georadius_ro","d":""},{"t":"M","n":"RedisCluster::georadiusbymember","p":"RedisCluster.html#method_georadiusbymember","d":""},{"t":"M","n":"RedisCluster::georadiusbymember_ro","p":"RedisCluster.html#method_georadiusbymember_ro","d":""},{"t":"M","n":"RedisCluster::get","p":"RedisCluster.html#method_get","d":""},{"t":"M","n":"RedisCluster::getbit","p":"RedisCluster.html#method_getbit","d":""},{"t":"M","n":"RedisCluster::getlasterror","p":"RedisCluster.html#method_getlasterror","d":""},{"t":"M","n":"RedisCluster::getmode","p":"RedisCluster.html#method_getmode","d":""},{"t":"M","n":"RedisCluster::getoption","p":"RedisCluster.html#method_getoption","d":""},{"t":"M","n":"RedisCluster::getrange","p":"RedisCluster.html#method_getrange","d":""},{"t":"M","n":"RedisCluster::lcs","p":"RedisCluster.html#method_lcs","d":""},{"t":"M","n":"RedisCluster::getset","p":"RedisCluster.html#method_getset","d":""},{"t":"M","n":"RedisCluster::gettransferredbytes","p":"RedisCluster.html#method_gettransferredbytes","d":""},{"t":"M","n":"RedisCluster::hdel","p":"RedisCluster.html#method_hdel","d":""},{"t":"M","n":"RedisCluster::hexists","p":"RedisCluster.html#method_hexists","d":""},{"t":"M","n":"RedisCluster::hget","p":"RedisCluster.html#method_hget","d":""},{"t":"M","n":"RedisCluster::hgetall","p":"RedisCluster.html#method_hgetall","d":""},{"t":"M","n":"RedisCluster::hincrby","p":"RedisCluster.html#method_hincrby","d":""},{"t":"M","n":"RedisCluster::hincrbyfloat","p":"RedisCluster.html#method_hincrbyfloat","d":""},{"t":"M","n":"RedisCluster::hkeys","p":"RedisCluster.html#method_hkeys","d":""},{"t":"M","n":"RedisCluster::hlen","p":"RedisCluster.html#method_hlen","d":""},{"t":"M","n":"RedisCluster::hmget","p":"RedisCluster.html#method_hmget","d":""},{"t":"M","n":"RedisCluster::hmset","p":"RedisCluster.html#method_hmset","d":""},{"t":"M","n":"RedisCluster::hscan","p":"RedisCluster.html#method_hscan","d":""},{"t":"M","n":"RedisCluster::hset","p":"RedisCluster.html#method_hset","d":""},{"t":"M","n":"RedisCluster::hsetnx","p":"RedisCluster.html#method_hsetnx","d":""},{"t":"M","n":"RedisCluster::hstrlen","p":"RedisCluster.html#method_hstrlen","d":""},{"t":"M","n":"RedisCluster::hvals","p":"RedisCluster.html#method_hvals","d":""},{"t":"M","n":"RedisCluster::incr","p":"RedisCluster.html#method_incr","d":""},{"t":"M","n":"RedisCluster::incrby","p":"RedisCluster.html#method_incrby","d":""},{"t":"M","n":"RedisCluster::incrbyfloat","p":"RedisCluster.html#method_incrbyfloat","d":""},{"t":"M","n":"RedisCluster::info","p":"RedisCluster.html#method_info","d":"Retrieve information about the connected redis-server. If no arguments are passed to\nthis function, redis will return every info field. Alternatively you may pass a specific\nsection you want returned (e.g. 'server', or 'memory') to receive only information pertaining\nto that section.
"},{"t":"M","n":"RedisCluster::keys","p":"RedisCluster.html#method_keys","d":""},{"t":"M","n":"RedisCluster::lastsave","p":"RedisCluster.html#method_lastsave","d":""},{"t":"M","n":"RedisCluster::lget","p":"RedisCluster.html#method_lget","d":""},{"t":"M","n":"RedisCluster::lindex","p":"RedisCluster.html#method_lindex","d":""},{"t":"M","n":"RedisCluster::linsert","p":"RedisCluster.html#method_linsert","d":""},{"t":"M","n":"RedisCluster::llen","p":"RedisCluster.html#method_llen","d":""},{"t":"M","n":"RedisCluster::lpop","p":"RedisCluster.html#method_lpop","d":""},{"t":"M","n":"RedisCluster::lpush","p":"RedisCluster.html#method_lpush","d":""},{"t":"M","n":"RedisCluster::lpushx","p":"RedisCluster.html#method_lpushx","d":""},{"t":"M","n":"RedisCluster::lrange","p":"RedisCluster.html#method_lrange","d":""},{"t":"M","n":"RedisCluster::lrem","p":"RedisCluster.html#method_lrem","d":""},{"t":"M","n":"RedisCluster::lset","p":"RedisCluster.html#method_lset","d":""},{"t":"M","n":"RedisCluster::ltrim","p":"RedisCluster.html#method_ltrim","d":""},{"t":"M","n":"RedisCluster::mget","p":"RedisCluster.html#method_mget","d":""},{"t":"M","n":"RedisCluster::mset","p":"RedisCluster.html#method_mset","d":""},{"t":"M","n":"RedisCluster::msetnx","p":"RedisCluster.html#method_msetnx","d":""},{"t":"M","n":"RedisCluster::multi","p":"RedisCluster.html#method_multi","d":null},{"t":"M","n":"RedisCluster::object","p":"RedisCluster.html#method_object","d":""},{"t":"M","n":"RedisCluster::persist","p":"RedisCluster.html#method_persist","d":""},{"t":"M","n":"RedisCluster::pexpire","p":"RedisCluster.html#method_pexpire","d":""},{"t":"M","n":"RedisCluster::pexpireat","p":"RedisCluster.html#method_pexpireat","d":""},{"t":"M","n":"RedisCluster::pfadd","p":"RedisCluster.html#method_pfadd","d":""},{"t":"M","n":"RedisCluster::pfcount","p":"RedisCluster.html#method_pfcount","d":""},{"t":"M","n":"RedisCluster::pfmerge","p":"RedisCluster.html#method_pfmerge","d":""},{"t":"M","n":"RedisCluster::ping","p":"RedisCluster.html#method_ping","d":"PING an instance in the redis cluster.
"},{"t":"M","n":"RedisCluster::psetex","p":"RedisCluster.html#method_psetex","d":""},{"t":"M","n":"RedisCluster::psubscribe","p":"RedisCluster.html#method_psubscribe","d":""},{"t":"M","n":"RedisCluster::pttl","p":"RedisCluster.html#method_pttl","d":""},{"t":"M","n":"RedisCluster::publish","p":"RedisCluster.html#method_publish","d":""},{"t":"M","n":"RedisCluster::pubsub","p":"RedisCluster.html#method_pubsub","d":""},{"t":"M","n":"RedisCluster::punsubscribe","p":"RedisCluster.html#method_punsubscribe","d":""},{"t":"M","n":"RedisCluster::randomkey","p":"RedisCluster.html#method_randomkey","d":""},{"t":"M","n":"RedisCluster::rawcommand","p":"RedisCluster.html#method_rawcommand","d":""},{"t":"M","n":"RedisCluster::rename","p":"RedisCluster.html#method_rename","d":""},{"t":"M","n":"RedisCluster::renamenx","p":"RedisCluster.html#method_renamenx","d":""},{"t":"M","n":"RedisCluster::restore","p":"RedisCluster.html#method_restore","d":""},{"t":"M","n":"RedisCluster::role","p":"RedisCluster.html#method_role","d":""},{"t":"M","n":"RedisCluster::rpop","p":"RedisCluster.html#method_rpop","d":""},{"t":"M","n":"RedisCluster::rpoplpush","p":"RedisCluster.html#method_rpoplpush","d":""},{"t":"M","n":"RedisCluster::rpush","p":"RedisCluster.html#method_rpush","d":""},{"t":"M","n":"RedisCluster::rpushx","p":"RedisCluster.html#method_rpushx","d":""},{"t":"M","n":"RedisCluster::sadd","p":"RedisCluster.html#method_sadd","d":""},{"t":"M","n":"RedisCluster::saddarray","p":"RedisCluster.html#method_saddarray","d":""},{"t":"M","n":"RedisCluster::save","p":"RedisCluster.html#method_save","d":""},{"t":"M","n":"RedisCluster::scan","p":"RedisCluster.html#method_scan","d":""},{"t":"M","n":"RedisCluster::scard","p":"RedisCluster.html#method_scard","d":""},{"t":"M","n":"RedisCluster::script","p":"RedisCluster.html#method_script","d":""},{"t":"M","n":"RedisCluster::sdiff","p":"RedisCluster.html#method_sdiff","d":""},{"t":"M","n":"RedisCluster::sdiffstore","p":"RedisCluster.html#method_sdiffstore","d":""},{"t":"M","n":"RedisCluster::set","p":"RedisCluster.html#method_set","d":""},{"t":"M","n":"RedisCluster::setbit","p":"RedisCluster.html#method_setbit","d":""},{"t":"M","n":"RedisCluster::setex","p":"RedisCluster.html#method_setex","d":""},{"t":"M","n":"RedisCluster::setnx","p":"RedisCluster.html#method_setnx","d":""},{"t":"M","n":"RedisCluster::setoption","p":"RedisCluster.html#method_setoption","d":""},{"t":"M","n":"RedisCluster::setrange","p":"RedisCluster.html#method_setrange","d":""},{"t":"M","n":"RedisCluster::sinter","p":"RedisCluster.html#method_sinter","d":""},{"t":"M","n":"RedisCluster::sintercard","p":"RedisCluster.html#method_sintercard","d":""},{"t":"M","n":"RedisCluster::sinterstore","p":"RedisCluster.html#method_sinterstore","d":""},{"t":"M","n":"RedisCluster::sismember","p":"RedisCluster.html#method_sismember","d":""},{"t":"M","n":"RedisCluster::slowlog","p":"RedisCluster.html#method_slowlog","d":""},{"t":"M","n":"RedisCluster::smembers","p":"RedisCluster.html#method_smembers","d":""},{"t":"M","n":"RedisCluster::smove","p":"RedisCluster.html#method_smove","d":""},{"t":"M","n":"RedisCluster::sort","p":"RedisCluster.html#method_sort","d":""},{"t":"M","n":"RedisCluster::sort_ro","p":"RedisCluster.html#method_sort_ro","d":""},{"t":"M","n":"RedisCluster::spop","p":"RedisCluster.html#method_spop","d":""},{"t":"M","n":"RedisCluster::srandmember","p":"RedisCluster.html#method_srandmember","d":""},{"t":"M","n":"RedisCluster::srem","p":"RedisCluster.html#method_srem","d":""},{"t":"M","n":"RedisCluster::sscan","p":"RedisCluster.html#method_sscan","d":""},{"t":"M","n":"RedisCluster::strlen","p":"RedisCluster.html#method_strlen","d":""},{"t":"M","n":"RedisCluster::subscribe","p":"RedisCluster.html#method_subscribe","d":""},{"t":"M","n":"RedisCluster::sunion","p":"RedisCluster.html#method_sunion","d":""},{"t":"M","n":"RedisCluster::sunionstore","p":"RedisCluster.html#method_sunionstore","d":""},{"t":"M","n":"RedisCluster::time","p":"RedisCluster.html#method_time","d":""},{"t":"M","n":"RedisCluster::ttl","p":"RedisCluster.html#method_ttl","d":""},{"t":"M","n":"RedisCluster::type","p":"RedisCluster.html#method_type","d":""},{"t":"M","n":"RedisCluster::unsubscribe","p":"RedisCluster.html#method_unsubscribe","d":""},{"t":"M","n":"RedisCluster::unlink","p":"RedisCluster.html#method_unlink","d":""},{"t":"M","n":"RedisCluster::unwatch","p":"RedisCluster.html#method_unwatch","d":""},{"t":"M","n":"RedisCluster::watch","p":"RedisCluster.html#method_watch","d":""},{"t":"M","n":"RedisCluster::xack","p":"RedisCluster.html#method_xack","d":""},{"t":"M","n":"RedisCluster::xadd","p":"RedisCluster.html#method_xadd","d":""},{"t":"M","n":"RedisCluster::xclaim","p":"RedisCluster.html#method_xclaim","d":""},{"t":"M","n":"RedisCluster::xdel","p":"RedisCluster.html#method_xdel","d":""},{"t":"M","n":"RedisCluster::xgroup","p":"RedisCluster.html#method_xgroup","d":""},{"t":"M","n":"RedisCluster::xinfo","p":"RedisCluster.html#method_xinfo","d":""},{"t":"M","n":"RedisCluster::xlen","p":"RedisCluster.html#method_xlen","d":""},{"t":"M","n":"RedisCluster::xpending","p":"RedisCluster.html#method_xpending","d":""},{"t":"M","n":"RedisCluster::xrange","p":"RedisCluster.html#method_xrange","d":""},{"t":"M","n":"RedisCluster::xread","p":"RedisCluster.html#method_xread","d":""},{"t":"M","n":"RedisCluster::xreadgroup","p":"RedisCluster.html#method_xreadgroup","d":""},{"t":"M","n":"RedisCluster::xrevrange","p":"RedisCluster.html#method_xrevrange","d":""},{"t":"M","n":"RedisCluster::xtrim","p":"RedisCluster.html#method_xtrim","d":""},{"t":"M","n":"RedisCluster::zadd","p":"RedisCluster.html#method_zadd","d":""},{"t":"M","n":"RedisCluster::zcard","p":"RedisCluster.html#method_zcard","d":""},{"t":"M","n":"RedisCluster::zcount","p":"RedisCluster.html#method_zcount","d":""},{"t":"M","n":"RedisCluster::zincrby","p":"RedisCluster.html#method_zincrby","d":""},{"t":"M","n":"RedisCluster::zinterstore","p":"RedisCluster.html#method_zinterstore","d":""},{"t":"M","n":"RedisCluster::zintercard","p":"RedisCluster.html#method_zintercard","d":""},{"t":"M","n":"RedisCluster::zlexcount","p":"RedisCluster.html#method_zlexcount","d":""},{"t":"M","n":"RedisCluster::zpopmax","p":"RedisCluster.html#method_zpopmax","d":""},{"t":"M","n":"RedisCluster::zpopmin","p":"RedisCluster.html#method_zpopmin","d":""},{"t":"M","n":"RedisCluster::zrange","p":"RedisCluster.html#method_zrange","d":""},{"t":"M","n":"RedisCluster::zrangestore","p":"RedisCluster.html#method_zrangestore","d":""},{"t":"M","n":"RedisCluster::zrangebylex","p":"RedisCluster.html#method_zrangebylex","d":""},{"t":"M","n":"RedisCluster::zrangebyscore","p":"RedisCluster.html#method_zrangebyscore","d":""},{"t":"M","n":"RedisCluster::zrank","p":"RedisCluster.html#method_zrank","d":""},{"t":"M","n":"RedisCluster::zrem","p":"RedisCluster.html#method_zrem","d":""},{"t":"M","n":"RedisCluster::zremrangebylex","p":"RedisCluster.html#method_zremrangebylex","d":""},{"t":"M","n":"RedisCluster::zremrangebyrank","p":"RedisCluster.html#method_zremrangebyrank","d":""},{"t":"M","n":"RedisCluster::zremrangebyscore","p":"RedisCluster.html#method_zremrangebyscore","d":""},{"t":"M","n":"RedisCluster::zrevrange","p":"RedisCluster.html#method_zrevrange","d":""},{"t":"M","n":"RedisCluster::zrevrangebylex","p":"RedisCluster.html#method_zrevrangebylex","d":""},{"t":"M","n":"RedisCluster::zrevrangebyscore","p":"RedisCluster.html#method_zrevrangebyscore","d":""},{"t":"M","n":"RedisCluster::zrevrank","p":"RedisCluster.html#method_zrevrank","d":""},{"t":"M","n":"RedisCluster::zscan","p":"RedisCluster.html#method_zscan","d":""},{"t":"M","n":"RedisCluster::zscore","p":"RedisCluster.html#method_zscore","d":""},{"t":"M","n":"RedisCluster::zunionstore","p":"RedisCluster.html#method_zunionstore","d":""},{"t":"M","n":"RedisSentinel::__construct","p":"RedisSentinel.html#method___construct","d":null},{"t":"M","n":"RedisSentinel::ckquorum","p":"RedisSentinel.html#method_ckquorum","d":""},{"t":"M","n":"RedisSentinel::failover","p":"RedisSentinel.html#method_failover","d":""},{"t":"M","n":"RedisSentinel::flushconfig","p":"RedisSentinel.html#method_flushconfig","d":""},{"t":"M","n":"RedisSentinel::getMasterAddrByName","p":"RedisSentinel.html#method_getMasterAddrByName","d":""},{"t":"M","n":"RedisSentinel::master","p":"RedisSentinel.html#method_master","d":""},{"t":"M","n":"RedisSentinel::masters","p":"RedisSentinel.html#method_masters","d":""},{"t":"M","n":"RedisSentinel::myid","p":"RedisSentinel.html#method_myid","d":null},{"t":"M","n":"RedisSentinel::ping","p":"RedisSentinel.html#method_ping","d":""},{"t":"M","n":"RedisSentinel::reset","p":"RedisSentinel.html#method_reset","d":""},{"t":"M","n":"RedisSentinel::sentinels","p":"RedisSentinel.html#method_sentinels","d":""},{"t":"M","n":"RedisSentinel::slaves","p":"RedisSentinel.html#method_slaves","d":""},{"t":"N","n":"","p":"[Global_Namespace].html"}]}
diff --git a/docs/doctum.js b/docs/doctum.js
new file mode 100644
index 0000000..d487386
--- /dev/null
+++ b/docs/doctum.js
@@ -0,0 +1,316 @@
+var Doctum = {
+ treeJson: {"tree":{"l":0,"n":"","p":"","c":[{"l":1,"n":"[Global Namespace]","p":"[Global_Namespace]","c":[{"l":2,"n":"Redis","p":"Redis"},{"l":2,"n":"RedisArray","p":"RedisArray"},{"l":2,"n":"RedisCluster","p":"RedisCluster"},{"l":2,"n":"RedisClusterException","p":"RedisClusterException"},{"l":2,"n":"RedisException","p":"RedisException"},{"l":2,"n":"RedisSentinel","p":"RedisSentinel"}]}]},"treeOpenLevel":2},
+ /** @var boolean */
+ treeLoaded: false,
+ /** @var boolean */
+ listenersRegistered: false,
+ autoCompleteData: null,
+ /** @var boolean */
+ autoCompleteLoading: false,
+ /** @var boolean */
+ autoCompleteLoaded: false,
+ /** @var string|null */
+ rootPath: null,
+ /** @var string|null */
+ autoCompleteDataUrl: null,
+ /** @var HTMLElement|null */
+ doctumSearchAutoComplete: null,
+ /** @var HTMLElement|null */
+ doctumSearchAutoCompleteProgressBarContainer: null,
+ /** @var HTMLElement|null */
+ doctumSearchAutoCompleteProgressBar: null,
+ /** @var number */
+ doctumSearchAutoCompleteProgressBarPercent: 0,
+ /** @var autoComplete|null */
+ autoCompleteJS: null,
+ querySearchSecurityRegex: /([^0-9a-zA-Z:\\\\_\s])/gi,
+ buildTreeNode: function (treeNode, htmlNode, treeOpenLevel) {
+ var ulNode = document.createElement('ul');
+ for (var childKey in treeNode.c) {
+ var child = treeNode.c[childKey];
+ var liClass = document.createElement('li');
+ var hasChildren = child.hasOwnProperty('c');
+ var nodeSpecialName = (hasChildren ? 'namespace:' : 'class:') + child.p.replace(/\//g, '_');
+ liClass.setAttribute('data-name', nodeSpecialName);
+
+ // Create the node that will have the text
+ var divHd = document.createElement('div');
+ var levelCss = child.l - 1;
+ divHd.className = hasChildren ? 'hd' : 'hd leaf';
+ divHd.style.paddingLeft = (hasChildren ? (levelCss * 18) : (8 + (levelCss * 18))) + 'px';
+ if (hasChildren) {
+ if (child.l <= treeOpenLevel) {
+ liClass.className = 'opened';
+ }
+ var spanIcon = document.createElement('span');
+ spanIcon.className = 'icon icon-play';
+ divHd.appendChild(spanIcon);
+ }
+ var aLink = document.createElement('a');
+
+ // Edit the HTML link to work correctly based on the current depth
+ aLink.href = Doctum.rootPath + child.p + '.html';
+ aLink.innerText = child.n;
+ divHd.appendChild(aLink);
+ liClass.appendChild(divHd);
+
+ // It has children
+ if (hasChildren) {
+ var divBd = document.createElement('div');
+ divBd.className = 'bd';
+ Doctum.buildTreeNode(child, divBd, treeOpenLevel);
+ liClass.appendChild(divBd);
+ }
+ ulNode.appendChild(liClass);
+ }
+ htmlNode.appendChild(ulNode);
+ },
+ initListeners: function () {
+ if (Doctum.listenersRegistered) {
+ // Quick exit, already registered
+ return;
+ }
+ Doctum.listenersRegistered = true;
+ },
+ loadTree: function () {
+ if (Doctum.treeLoaded) {
+ // Quick exit, already registered
+ return;
+ }
+ Doctum.rootPath = document.body.getAttribute('data-root-path');
+ Doctum.buildTreeNode(Doctum.treeJson.tree, document.getElementById('api-tree'), Doctum.treeJson.treeOpenLevel);
+
+ // Toggle left-nav divs on click
+ $('#api-tree .hd span').on('click', function () {
+ $(this).parent().parent().toggleClass('opened');
+ });
+
+ // Expand the parent namespaces of the current page.
+ var expected = $('body').attr('data-name');
+
+ if (expected) {
+ // Open the currently selected node and its parents.
+ var container = $('#api-tree');
+ var node = $('#api-tree li[data-name="' + expected + '"]');
+ // Node might not be found when simulating namespaces
+ if (node.length > 0) {
+ node.addClass('active').addClass('opened');
+ node.parents('li').addClass('opened');
+ var scrollPos = node.offset().top - container.offset().top + container.scrollTop();
+ // Position the item nearer to the top of the screen.
+ scrollPos -= 200;
+ container.scrollTop(scrollPos);
+ }
+ }
+ Doctum.treeLoaded = true;
+ },
+ pagePartiallyLoaded: function (event) {
+ Doctum.initListeners();
+ Doctum.loadTree();
+ Doctum.loadAutoComplete();
+ },
+ pageFullyLoaded: function (event) {
+ // it may not have received DOMContentLoaded event
+ Doctum.initListeners();
+ Doctum.loadTree();
+ Doctum.loadAutoComplete();
+ // Fire the event in the search page too
+ if (typeof DoctumSearch === 'object') {
+ DoctumSearch.pageFullyLoaded();
+ }
+ },
+ loadAutoComplete: function () {
+ if (Doctum.autoCompleteLoaded) {
+ // Quick exit, already loaded
+ return;
+ }
+ Doctum.autoCompleteDataUrl = document.body.getAttribute('data-search-index-url');
+ Doctum.doctumSearchAutoComplete = document.getElementById('doctum-search-auto-complete');
+ Doctum.doctumSearchAutoCompleteProgressBarContainer = document.getElementById('search-progress-bar-container');
+ Doctum.doctumSearchAutoCompleteProgressBar = document.getElementById('search-progress-bar');
+ if (Doctum.doctumSearchAutoComplete !== null) {
+ // Wait for it to be loaded
+ Doctum.doctumSearchAutoComplete.addEventListener('init', function (_) {
+ Doctum.autoCompleteLoaded = true;
+ Doctum.doctumSearchAutoComplete.addEventListener('selection', function (event) {
+ // Go to selection page
+ window.location = Doctum.rootPath + event.detail.selection.value.p;
+ });
+ Doctum.doctumSearchAutoComplete.addEventListener('navigate', function (event) {
+ // Set selection in text box
+ if (typeof event.detail.selection.value === 'object') {
+ Doctum.doctumSearchAutoComplete.value = event.detail.selection.value.n;
+ }
+ });
+ Doctum.doctumSearchAutoComplete.addEventListener('results', function (event) {
+ Doctum.markProgressFinished();
+ });
+ });
+ }
+ // Check if the lib is loaded
+ if (typeof autoComplete === 'function') {
+ Doctum.bootAutoComplete();
+ }
+ },
+ markInProgress: function () {
+ Doctum.doctumSearchAutoCompleteProgressBarContainer.className = 'search-bar';
+ Doctum.doctumSearchAutoCompleteProgressBar.className = 'progress-bar indeterminate';
+ if (typeof DoctumSearch === 'object' && DoctumSearch.pageFullyLoaded) {
+ DoctumSearch.doctumSearchPageAutoCompleteProgressBarContainer.className = 'search-bar';
+ DoctumSearch.doctumSearchPageAutoCompleteProgressBar.className = 'progress-bar indeterminate';
+ }
+ },
+ markProgressFinished: function () {
+ Doctum.doctumSearchAutoCompleteProgressBarContainer.className = 'search-bar hidden';
+ Doctum.doctumSearchAutoCompleteProgressBar.className = 'progress-bar';
+ if (typeof DoctumSearch === 'object' && DoctumSearch.pageFullyLoaded) {
+ DoctumSearch.doctumSearchPageAutoCompleteProgressBarContainer.className = 'search-bar hidden';
+ DoctumSearch.doctumSearchPageAutoCompleteProgressBar.className = 'progress-bar';
+ }
+ },
+ makeProgess: function () {
+ Doctum.makeProgressOnProgressBar(
+ Doctum.doctumSearchAutoCompleteProgressBarPercent,
+ Doctum.doctumSearchAutoCompleteProgressBar
+ );
+ if (typeof DoctumSearch === 'object' && DoctumSearch.pageFullyLoaded) {
+ Doctum.makeProgressOnProgressBar(
+ Doctum.doctumSearchAutoCompleteProgressBarPercent,
+ DoctumSearch.doctumSearchPageAutoCompleteProgressBar
+ );
+ }
+ },
+ loadAutoCompleteData: function (query) {
+ return new Promise(function (resolve, reject) {
+ if (Doctum.autoCompleteData !== null) {
+ resolve(Doctum.autoCompleteData);
+ return;
+ }
+ Doctum.markInProgress();
+ function reqListener() {
+ Doctum.autoCompleteLoading = false;
+ Doctum.autoCompleteData = JSON.parse(this.responseText).items;
+ Doctum.markProgressFinished();
+
+ setTimeout(function () {
+ resolve(Doctum.autoCompleteData);
+ }, 50);// Let the UI render once before sending the results for processing. This gives time to the progress bar to hide
+ }
+ function reqError(err) {
+ Doctum.autoCompleteLoading = false;
+ Doctum.autoCompleteData = null;
+ console.error(err);
+ reject(err);
+ }
+
+ var oReq = new XMLHttpRequest();
+ oReq.onload = reqListener;
+ oReq.onerror = reqError;
+ oReq.onprogress = function (pe) {
+ if (pe.lengthComputable) {
+ Doctum.doctumSearchAutoCompleteProgressBarPercent = parseInt(pe.loaded / pe.total * 100, 10);
+ Doctum.makeProgess();
+ }
+ };
+ oReq.onloadend = function (_) {
+ Doctum.markProgressFinished();
+ };
+ oReq.open('get', Doctum.autoCompleteDataUrl, true);
+ oReq.send();
+ });
+ },
+ /**
+ * Make some progress on a progress bar
+ *
+ * @param number percentage
+ * @param HTMLElement progressBar
+ * @return void
+ */
+ makeProgressOnProgressBar: function(percentage, progressBar) {
+ progressBar.className = 'progress-bar';
+ progressBar.style.width = percentage + '%';
+ progressBar.setAttribute(
+ 'aria-valuenow', percentage
+ );
+ },
+ searchEngine: function (query, record) {
+ if (typeof query !== 'string') {
+ return '';
+ }
+ // replace all (mode = g) spaces and non breaking spaces (\s) by pipes
+ // g = global mode to mark also the second word searched
+ // i = case insensitive
+ // how this function works:
+ // First: search if the query has the keywords in sequence
+ // Second: replace the keywords by a mark and leave all the text in between non marked
+
+ if (record.match(new RegExp('(' + query.replace(/\s/g, ').*(') + ')', 'gi')) === null) {
+ return '';// Does not match
+ }
+
+ var replacedRecord = record.replace(new RegExp('(' + query.replace(/\s/g, '|') + ')', 'gi'), function (group) {
+ return '' + group + ' ';
+ });
+
+ if (replacedRecord !== record) {
+ return replacedRecord;// This should not happen but just in case there was no match done
+ }
+
+ return '';
+ },
+ /**
+ * Clean the search query
+ *
+ * @param string query
+ * @return string
+ */
+ cleanSearchQuery: function (query) {
+ // replace any chars that could lead to injecting code in our regex
+ // remove start or end spaces
+ // replace backslashes by an escaped version, use case in search: \myRootFunction
+ return query.replace(Doctum.querySearchSecurityRegex, '').trim().replace(/\\/g, '\\\\');
+ },
+ bootAutoComplete: function () {
+ Doctum.autoCompleteJS = new autoComplete(
+ {
+ selector: '#doctum-search-auto-complete',
+ searchEngine: function (query, record) {
+ return Doctum.searchEngine(query, record);
+ },
+ submit: true,
+ data: {
+ src: function (q) {
+ Doctum.markInProgress();
+ return Doctum.loadAutoCompleteData(q);
+ },
+ keys: ['n'],// Data 'Object' key to be searched
+ cache: false, // Is not compatible with async fetch of data
+ },
+ query: (input) => {
+ return Doctum.cleanSearchQuery(input);
+ },
+ trigger: (query) => {
+ return Doctum.cleanSearchQuery(query).length > 0;
+ },
+ resultsList: {
+ tag: 'ul',
+ class: 'auto-complete-dropdown-menu',
+ destination: '#auto-complete-results',
+ position: 'afterbegin',
+ maxResults: 500,
+ noResults: false,
+ },
+ resultItem: {
+ tag: 'li',
+ class: 'auto-complete-result',
+ highlight: 'auto-complete-highlight',
+ selected: 'auto-complete-selected'
+ },
+ }
+ );
+ }
+};
+
+
+document.addEventListener('DOMContentLoaded', Doctum.pagePartiallyLoaded, false);
+window.addEventListener('load', Doctum.pageFullyLoaded, false);
diff --git a/docs/fonts/doctum-font.css b/docs/fonts/doctum-font.css
new file mode 100644
index 0000000..d022b4c
--- /dev/null
+++ b/docs/fonts/doctum-font.css
@@ -0,0 +1,61 @@
+@font-face {
+ font-family: "doctum";
+ src: url("./doctum.eot?39101248");
+ src: url("./doctum.eot?39101248#iefix") format("embedded-opentype"),
+ url("./doctum.woff2?39101248") format("woff2"), url("./doctum.woff?39101248") format("woff"),
+ url("./doctum.ttf?39101248") format("truetype"), url("./doctum.svg?39101248#doctum") format("svg");
+ font-weight: normal;
+ font-style: normal;
+}
+/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
+/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
+/*
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+ @font-face {
+ font-family: 'doctum';
+ src: url('./doctum.svg?39101248#doctum') format('svg');
+ }
+}
+*/
+
+.icon {
+ font-family: "doctum";
+ font-style: normal;
+ font-weight: normal;
+ speak: never;
+
+ display: inline-block;
+ text-decoration: inherit;
+ width: 1em;
+ margin-right: 0.2em;
+ text-align: center;
+ /* opacity: .8; */
+
+ /* For safety - reset parent styles, that can break glyph codes*/
+ font-variant: normal;
+ text-transform: none;
+
+ /* fix buttons height, for twitter bootstrap */
+ line-height: 1em;
+
+ /* Animation center compensation - margins should be symmetric */
+ /* remove if not needed */
+ margin-left: 0.2em;
+
+ /* you can be more comfortable with increased icons size */
+ /* font-size: 120%; */
+
+ /* Font smoothing. That was taken from TWBS */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+
+ /* Uncomment for 3D effect */
+ /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+
+.icon-search:before {
+ content: "\e800";
+} /* '' */
+.icon-play:before {
+ content: "\e801";
+} /* '' */
diff --git a/docs/fonts/doctum.eot b/docs/fonts/doctum.eot
new file mode 100644
index 0000000..0daf464
Binary files /dev/null and b/docs/fonts/doctum.eot differ
diff --git a/docs/fonts/doctum.svg b/docs/fonts/doctum.svg
new file mode 100644
index 0000000..341469b
--- /dev/null
+++ b/docs/fonts/doctum.svg
@@ -0,0 +1,14 @@
+
+
+
+Material Design Icons
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/fonts/doctum.ttf b/docs/fonts/doctum.ttf
new file mode 100644
index 0000000..cf3f816
Binary files /dev/null and b/docs/fonts/doctum.ttf differ
diff --git a/docs/fonts/doctum.woff b/docs/fonts/doctum.woff
new file mode 100644
index 0000000..6e1ca3b
Binary files /dev/null and b/docs/fonts/doctum.woff differ
diff --git a/docs/fonts/doctum.woff2 b/docs/fonts/doctum.woff2
new file mode 100644
index 0000000..e7b1a3e
Binary files /dev/null and b/docs/fonts/doctum.woff2 differ
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..f048b2e
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+ All Classes | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/interfaces.html b/docs/interfaces.html
new file mode 100644
index 0000000..804c07e
--- /dev/null
+++ b/docs/interfaces.html
@@ -0,0 +1,90 @@
+
+
+
+
+
+ Interfaces | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/js/autocomplete.min.js b/docs/js/autocomplete.min.js
new file mode 100644
index 0000000..f7a5838
--- /dev/null
+++ b/docs/js/autocomplete.min.js
@@ -0,0 +1,5 @@
+/*!
+ * AutoComplete.js v10.2.6 (https://github.com/TarekRaafat/autoComplete.js)
+ * Licensed under the Apache 2.0 license
+ */
+var t,e;t=this,e=function(){"use strict";function t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function e(e){for(var n=1;nt.length)&&(e=t.length);for(var n=0,r=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,u=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return u=t.done,t},e:function(t){a=!0,s=t},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw s}}}}(n.keys);try{for(l.s();!(c=l.n()).done;)a(c.value)}catch(t){l.e(t)}finally{l.f()}}else a()})),n.filter&&(i=n.filter(i));var s=i.slice(0,e.resultsList.maxResults);e.feedback={query:t,matches:i,results:s},f("results",e)},m="aria-expanded",b="aria-activedescendant",y="aria-selected",v=function(t,n){t.feedback.selection=e({index:n},t.feedback.results[n])},g=function(t){t.isOpen||((t.wrapper||t.input).setAttribute(m,!0),t.list.removeAttribute("hidden"),t.isOpen=!0,f("open",t))},w=function(t){t.isOpen&&((t.wrapper||t.input).setAttribute(m,!1),t.input.setAttribute(b,""),t.list.setAttribute("hidden",""),t.isOpen=!1,f("close",t))},O=function(t,e){var n=e.resultItem,r=e.list.getElementsByTagName(n.tag),o=!!n.selected&&n.selected.split(" ");if(e.isOpen&&r.length){var s,u,a=e.cursor;t>=r.length&&(t=0),t<0&&(t=r.length-1),e.cursor=t,a>-1&&(r[a].removeAttribute(y),o&&(u=r[a].classList).remove.apply(u,i(o))),r[t].setAttribute(y,!0),o&&(s=r[t].classList).add.apply(s,i(o)),e.input.setAttribute(b,r[e.cursor].id),e.list.scrollTop=r[t].offsetTop-e.list.clientHeight+r[t].clientHeight+5,e.feedback.cursor=e.cursor,v(e,t),f("navigate",e)}},A=function(t){O(t.cursor+1,t)},k=function(t){O(t.cursor-1,t)},L=function(t,e,n){(n=n>=0?n:t.cursor)<0||(t.feedback.event=e,v(t,n),f("selection",t),w(t))};function j(t,n){var r=this;return new Promise((function(i,o){var s,u;return s=n||((u=t.input)instanceof HTMLInputElement||u instanceof HTMLTextAreaElement?u.value:u.innerHTML),function(t,e,n){return e?e(t):t.length>=n}(s=t.query?t.query(s):s,t.trigger,t.threshold)?d(t,s).then((function(n){try{return t.feedback instanceof Error?i():(h(s,t),t.resultsList&&function(t){var n=t.resultsList,r=t.list,i=t.resultItem,o=t.feedback,s=o.matches,u=o.results;if(t.cursor=-1,r.innerHTML="",s.length||n.noResults){var c=new DocumentFragment;u.forEach((function(t,n){var r=a(i.tag,e({id:"".concat(i.id,"_").concat(n),role:"option",innerHTML:t.match,inside:c},i.class&&{class:i.class}));i.element&&i.element(r,t)})),r.append(c),n.element&&n.element(r,o),g(t)}else w(t)}(t),c.call(r))}catch(t){return o(t)}}),o):(w(t),c.call(r));function c(){return i()}}))}var S=function(t,e){for(var n in t)for(var r in t[n])e(n,r)},T=function(t){var n,r,i,o=t.events,s=(n=function(){return j(t)},r=t.debounce,function(){clearTimeout(i),i=setTimeout((function(){return n()}),r)}),u=t.events=e({input:e({},o&&o.input)},t.resultsList&&{list:o?e({},o.list):{}}),a={input:{input:function(){s()},keydown:function(e){!function(t,e){switch(t.keyCode){case 40:case 38:t.preventDefault(),40===t.keyCode?A(e):k(e);break;case 13:e.submit||t.preventDefault(),e.cursor>=0&&L(e,t);break;case 9:e.resultsList.tabSelect&&e.cursor>=0&&L(e,t);break;case 27:e.input.value="",w(e)}}(e,t)},blur:function(){w(t)}},list:{mousedown:function(t){t.preventDefault()},click:function(e){!function(t,e){var n=e.resultItem.tag.toUpperCase(),r=Array.from(e.list.querySelectorAll(n)),i=t.target.closest(n);i&&i.nodeName===n&&L(e,t,r.indexOf(i))}(e,t)}}};S(a,(function(e,n){(t.resultsList||"input"===n)&&(u[e][n]||(u[e][n]=a[e][n]))})),S(u,(function(e,n){t[e].addEventListener(n,u[e][n])}))};function E(t){var n=this;return new Promise((function(r,i){var o,s,u;if(o=t.placeHolder,u={role:"combobox","aria-owns":(s=t.resultsList).id,"aria-haspopup":!0,"aria-expanded":!1},a(t.input,e(e({"aria-controls":s.id,"aria-autocomplete":"both"},o&&{placeholder:o}),!t.wrapper&&e({},u))),t.wrapper&&(t.wrapper=a("div",e({around:t.input,class:t.name+"_wrapper"},u))),s&&(t.list=a(s.tag,e({dest:[s.destination,s.position],id:s.id,role:"listbox",hidden:"hidden"},s.class&&{class:s.class}))),T(t),t.data.cache)return d(t).then((function(t){try{return c.call(n)}catch(t){return i(t)}}),i);function c(){return f("init",t),r()}return c.call(n)}))}function x(t){var e=t.prototype;e.init=function(){E(this)},e.start=function(t){j(this,t)},e.unInit=function(){if(this.wrapper){var t=this.wrapper.parentNode;t.insertBefore(this.input,this.wrapper),t.removeChild(this.wrapper)}var e;S((e=this).events,(function(t,n){e[t].removeEventListener(n,e.events[t][n])}))},e.open=function(){g(this)},e.close=function(){w(this)},e.goTo=function(t){O(t,this)},e.next=function(){A(this)},e.previous=function(){k(this)},e.select=function(t){L(this,null,t)},e.search=function(t,e,n){return p(t,e,n)}}return function t(e){this.options=e,this.id=t.instances=(t.instances||0)+1,this.name="autoComplete",this.wrapper=1,this.threshold=1,this.debounce=0,this.resultsList={position:"afterend",tag:"ul",maxResults:5},this.resultItem={tag:"li"},function(t){var e=t.name,r=t.options,i=t.resultsList,o=t.resultItem;for(var s in r)if("object"===n(r[s]))for(var a in t[s]||(t[s]={}),r[s])t[s][a]=r[s][a];else t[s]=r[s];t.selector=t.selector||"#"+e,i.destination=i.destination||t.selector,i.id=i.id||e+"_list_"+t.id,o.id=o.id||e+"_result",t.input=u(t.selector)}(this),x.call(this,t),E(this)}},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).autoComplete=e();
diff --git a/docs/js/bootstrap.min.js b/docs/js/bootstrap.min.js
new file mode 100644
index 0000000..5c8647b
--- /dev/null
+++ b/docs/js/bootstrap.min.js
@@ -0,0 +1,11 @@
+/*!
+ * Generated using the Bootstrap Customizer (https://getbootstrap.com/docs/3.4/customize/)
+ */
+
+/*!
+ * Bootstrap v3.4.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(t){"use strict";function e(e){var a=e.attr("data-target");a||(a=e.attr("href"),a=a&&/#[A-Za-z]/.test(a)&&a.replace(/.*(?=#[^\s]*$)/,""));var n="#"!==a?t(document).find(a):null;return n&&n.length?n:e.parent()}function a(a){a&&3===a.which||(t(i).remove(),t(s).each(function(){var n=t(this),i=e(n),s={relatedTarget:this};i.hasClass("open")&&(a&&"click"==a.type&&/input|textarea/i.test(a.target.tagName)&&t.contains(i[0],a.target)||(i.trigger(a=t.Event("hide.bs.dropdown",s)),a.isDefaultPrevented()||(n.attr("aria-expanded","false"),i.removeClass("open").trigger(t.Event("hidden.bs.dropdown",s)))))}))}function n(e){return this.each(function(){var a=t(this),n=a.data("bs.dropdown");n||a.data("bs.dropdown",n=new o(this)),"string"==typeof e&&n[e].call(a)})}var i=".dropdown-backdrop",s='[data-toggle="dropdown"]',o=function(e){t(e).on("click.bs.dropdown",this.toggle)};o.VERSION="3.4.1",o.prototype.toggle=function(n){var i=t(this);if(!i.is(".disabled, :disabled")){var s=e(i),o=s.hasClass("open");if(a(),!o){"ontouchstart"in document.documentElement&&!s.closest(".navbar-nav").length&&t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click",a);var r={relatedTarget:this};if(s.trigger(n=t.Event("show.bs.dropdown",r)),n.isDefaultPrevented())return;i.trigger("focus").attr("aria-expanded","true"),s.toggleClass("open").trigger(t.Event("shown.bs.dropdown",r))}return!1}},o.prototype.keydown=function(a){if(/(38|40|27|32)/.test(a.which)&&!/input|textarea/i.test(a.target.tagName)){var n=t(this);if(a.preventDefault(),a.stopPropagation(),!n.is(".disabled, :disabled")){var i=e(n),o=i.hasClass("open");if(!o&&27!=a.which||o&&27==a.which)return 27==a.which&&i.find(s).trigger("focus"),n.trigger("click");var r=" li:not(.disabled):visible a",l=i.find(".dropdown-menu"+r);if(l.length){var d=l.index(a.target);38==a.which&&d>0&&d--,40==a.which&&d+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+R+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(d.childNodes),d.childNodes),t[d.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!k[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&(U.test(t)||_.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&p.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=A)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+be(l[o]);c=l.join(",")}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){k(t,!0)}finally{s===A&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[A]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:d;return r!=T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),d!=T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.scope=ce(function(e){return a.appendChild(e).appendChild(T.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=A,!T.getElementsByName||!T.getElementsByName(A).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+A+"-]").length||v.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+R+"*name"+R+"*="+R+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+A+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML=" ";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==d&&y(d,e)?-1:t==T||t.ownerDocument==d&&y(d,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==T?-1:t==T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]==d?-1:s[r]==d?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(C(e),p.matchesSelector&&E&&!k[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){k(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return b(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:w,!0)),k.test(r[1])&&E.isPlainObject(t))for(r in t)b(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=w.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):b(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,L=E(w);var q=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i;le=w.createDocumentFragment().appendChild(w.createElement("div")),(ce=w.createElement("input")).setAttribute("type","radio"),ce.setAttribute("checked","checked"),ce.setAttribute("name","t"),le.appendChild(ce),m.checkClone=le.cloneNode(!0).cloneNode(!0).lastChild.checked,le.innerHTML="",m.noCloneChecked=!!le.cloneNode(!0).lastChild.defaultValue,le.innerHTML=" ",m.option=!!le.lastChild;var he={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var ye=/<|?\w+;/;function me(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p\s*$/g;function Le(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function je(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n",2===ft.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?((r=(t=w.implementation.createHTMLDocument("")).createElement("base")).href=w.location.href,t.head.appendChild(r)):t=w),o=!n&&[],(i=k.exec(e))?[t.createElement(i[1])]:(i=me([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),b(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=Fe(m.pixelPosition,function(e,t){if(t)return t=We(e,n),Ie.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0
+
+
+
+
+ Namespaces | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/opensearch.xml b/docs/opensearch.xml
new file mode 100644
index 0000000..d51e040
--- /dev/null
+++ b/docs/opensearch.xml
@@ -0,0 +1,9 @@
+
+
+ PhpRedis API (develop)
+ Searches PhpRedis API (develop)
+ PhpRedis API
+
+ UTF-8
+ false
+
diff --git a/docs/renderer.index b/docs/renderer.index
new file mode 100644
index 0000000..e1826a6
--- /dev/null
+++ b/docs/renderer.index
@@ -0,0 +1 @@
+O:21:"Doctum\Renderer\Index":3:{i:0;a:6:{s:5:"Redis";s:40:"65ebe68ff54586b8953ba135c8c8d5c1208cf563";s:10:"RedisArray";s:40:"fb17c785beccf1dbeedaa48afb4aa7d48fd8b655";s:12:"RedisCluster";s:40:"1783d14c476f95598062edb44dab7284b9b2680d";s:21:"RedisClusterException";s:40:"1783d14c476f95598062edb44dab7284b9b2680d";s:14:"RedisException";s:40:"65ebe68ff54586b8953ba135c8c8d5c1208cf563";s:13:"RedisSentinel";s:40:"4055ace9f1cf20bef89bdb5d3219470b4c8915e6";}i:1;a:1:{i:0;s:7:"develop";}i:2;a:1:{i:0;s:0:"";}}
\ No newline at end of file
diff --git a/docs/search.html b/docs/search.html
new file mode 100644
index 0000000..9d7121a
--- /dev/null
+++ b/docs/search.html
@@ -0,0 +1,297 @@
+
+
+
+
+
+ Search | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This page allows you to search through the API documentation for
+ specific terms. Enter your search words into the box below and click
+ "submit". The search will be performed on namespaces, classes, interfaces,
+ traits, functions, and methods.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/traits.html b/docs/traits.html
new file mode 100644
index 0000000..d62c6ea
--- /dev/null
+++ b/docs/traits.html
@@ -0,0 +1,89 @@
+
+
+
+
+
+ Traits | PhpRedis API
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doctum-config.php b/doctum-config.php
new file mode 100644
index 0000000..c1ac155
--- /dev/null
+++ b/doctum-config.php
@@ -0,0 +1,28 @@
+files()
+ ->name('*.stub.php')
+ ->in($root);
+
+$versions = GitVersionCollection::create($root)
+ ->add('develop', 'develop');
+
+return new Doctum($iterator, [
+ 'title' => 'PhpRedis API',
+ 'language' => 'en',
+ 'source_dir' => $root,
+ 'build_dir' => "{$root}/docs",
+ 'cache_dir' => "{$root}/docs/.cache",
+ 'base_url' => 'https://phpredis.github.io/',
+ 'versions' => $versions,
+ 'remote_repository' => new GitHubRemoteRepository('phpredis/phpredis', $root),
+]);
diff --git a/doctum.md b/doctum.md
new file mode 100644
index 0000000..374e27c
--- /dev/null
+++ b/doctum.md
@@ -0,0 +1,8 @@
+# API Documentation
+
+```bash
+curl -O https://doctum.long-term.support/releases/latest/doctum.phar
+chmod +x doctum.phar
+
+./doctum.phar update doctum-config.php
+```
\ No newline at end of file