<h2><aname="Commands operating on string values">Commands operating on string values</a></h2><ul><li><ahref="SetCommand.html">SET</a><i>key</i><i>value</i><codename="code"class="python">set a key to a string value</code></li><li><ahref="GetCommand.html">GET</a><i>key</i><codename="code"class="python">return the string value of the key</code></li><li><ahref="GetsetCommand.html">GETSET</a><i>key</i><i>value</i><codename="code"class="python">set a key to a string returning the old value of the key</code></li><li><ahref="MgetCommand.html">MGET</a><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">multi-get, return the strings values of the keys</code></li><li><ahref="SetnxCommand.html">SETNX</a><i>key</i><i>value</i><codename="code"class="python">set a key to a string value if the key does not exist</code></li><li><ahref="MsetCommand.html">MSET</a><i>key1</i><i>value1</i><i>key2</i><i>value2</i> ... <i>keyN</i><i>valueN</i><codename="code"class="python">set a multiple keys to multiple values in a single atomic operation</code></li><li><ahref="MsetCommand.html">MSETNX</a><i>key1</i><i>value1</i><i>key2</i><i>value2</i> ... <i>keyN</i><i>valueN</i><codename="code"class="python">set a multiple keys to multiple values in a single atomic operation if none of the keys already exist</code></li><li><ahref="IncrCommand.html">INCR</a><i>key</i><codename="code"class="python">increment the integer value of key</code></li><li><ahref="IncrCommand.html">INCRBY</a><i>key</i><i>integer</i><codename="code"class="python"> increment the integer value of key by integer</code></li><li><ahref="IncrCommand.html">DECR</a><i>key</i><codename="code"class="python">decrement the integer value of key</code></li><li><ahref="IncrCommand.html">DECRBY</a><i>key</i><i>integer</i><codename="code"class="python">decrement the integer value of key by integer</code></li></ul>
<h2><aname="Commands operating on string values">Commands operating on string values</a></h2><ul><li><ahref="SetCommand.html">SET</a><i>key</i><i>value</i><codename="code"class="python">set a key to a string value</code></li><li><ahref="GetCommand.html">GET</a><i>key</i><codename="code"class="python">return the string value of the key</code></li><li><ahref="GetsetCommand.html">GETSET</a><i>key</i><i>value</i><codename="code"class="python">set a key to a string returning the old value of the key</code></li><li><ahref="MgetCommand.html">MGET</a><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">multi-get, return the strings values of the keys</code></li><li><ahref="SetnxCommand.html">SETNX</a><i>key</i><i>value</i><codename="code"class="python">set a key to a string value if the key does not exist</code></li><li><ahref="MsetCommand.html">MSET</a><i>key1</i><i>value1</i><i>key2</i><i>value2</i> ... <i>keyN</i><i>valueN</i><codename="code"class="python">set a multiple keys to multiple values in a single atomic operation</code></li><li><ahref="MsetCommand.html">MSETNX</a><i>key1</i><i>value1</i><i>key2</i><i>value2</i> ... <i>keyN</i><i>valueN</i><codename="code"class="python">set a multiple keys to multiple values in a single atomic operation if none of the keys already exist</code></li><li><ahref="IncrCommand.html">INCR</a><i>key</i><codename="code"class="python">increment the integer value of key</code></li><li><ahref="IncrCommand.html">INCRBY</a><i>key</i><i>integer</i><codename="code"class="python"> increment the integer value of key by integer</code></li><li><ahref="IncrCommand.html">DECR</a><i>key</i><codename="code"class="python">decrement the integer value of key</code></li><li><ahref="IncrCommand.html">DECRBY</a><i>key</i><i>integer</i><codename="code"class="python">decrement the integer value of key by integer</code></li></ul>
<h2><aname="Commands operating on lists">Commands operating on lists</a></h2><ul><li><ahref="RpushCommand.html">RPUSH</a><i>key</i><i>value</i><codename="code"class="python">Append an element to the tail of the List value at key</code></li><li><ahref="RpushCommand.html">LPUSH</a><i>key</i><i>value</i><codename="code"class="python">Append an element to the head of the List value at key</code></li><li><ahref="LlenCommand.html">LLEN</a><i>key</i><codename="code"class="python">Return the length of the List value at key</code></li><li><ahref="LrangeCommand.html">LRANGE</a><i>key</i><i>start</i><i>end</i><codename="code"class="python">Return a range of elements from the List at key</code></li><li><ahref="LtrimCommand.html">LTRIM</a><i>key</i><i>start</i><i>end</i><codename="code"class="python">Trim the list at key to the specified range of elements</code></li><li><ahref="LindexCommand.html">LINDEX</a><i>key</i><i>index</i><codename="code"class="python">Return the element at index position from the List at key</code></li><li><ahref="LsetCommand.html">LSET</a><i>key</i><i>index</i><i>value</i><codename="code"class="python">Set a new value as the element at index position of the List at key</code></li><li><ahref="LremCommand.html">LREM</a><i>key</i><i>count</i><i>value</i><codename="code"class="python">Remove the first-N, last-N, or all the elements matching value from the List at key</code></li><li><ahref="LpopCommand.html">LPOP</a><i>key</i><codename="code"class="python">Return and remove (atomically) the first element of the List at key</code></li><li><ahref="LpopCommand.html">RPOP</a><i>key</i><codename="code"class="python">Return and remove (atomically) the last element of the List at key</code></li><li><ahref="RpoplpushCommand.html">RPOPLPUSH</a><i>srckey</i><i>dstkey</i><codename="code"class="python">Return and remove (atomically) the last element of the source List stored at _srckey_ and push the same element to the destination List stored at _dstkey_</code></li></ul>
<h2><aname="Commands operating on lists">Commands operating on lists</a></h2><ul><li><ahref="RpushCommand.html">RPUSH</a><i>key</i><i>value</i><codename="code"class="python">Append an element to the tail of the List value at key</code></li><li><ahref="RpushCommand.html">LPUSH</a><i>key</i><i>value</i><codename="code"class="python">Append an element to the head of the List value at key</code></li><li><ahref="LlenCommand.html">LLEN</a><i>key</i><codename="code"class="python">Return the length of the List value at key</code></li><li><ahref="LrangeCommand.html">LRANGE</a><i>key</i><i>start</i><i>end</i><codename="code"class="python">Return a range of elements from the List at key</code></li><li><ahref="LtrimCommand.html">LTRIM</a><i>key</i><i>start</i><i>end</i><codename="code"class="python">Trim the list at key to the specified range of elements</code></li><li><ahref="LindexCommand.html">LINDEX</a><i>key</i><i>index</i><codename="code"class="python">Return the element at index position from the List at key</code></li><li><ahref="LsetCommand.html">LSET</a><i>key</i><i>index</i><i>value</i><codename="code"class="python">Set a new value as the element at index position of the List at key</code></li><li><ahref="LremCommand.html">LREM</a><i>key</i><i>count</i><i>value</i><codename="code"class="python">Remove the first-N, last-N, or all the elements matching value from the List at key</code></li><li><ahref="LpopCommand.html">LPOP</a><i>key</i><codename="code"class="python">Return and remove (atomically) the first element of the List at key</code></li><li><ahref="LpopCommand.html">RPOP</a><i>key</i><codename="code"class="python">Return and remove (atomically) the last element of the List at key</code></li><li><ahref="RpoplpushCommand.html">RPOPLPUSH</a><i>srckey</i><i>dstkey</i><codename="code"class="python">Return and remove (atomically) the last element of the source List stored at _srckey_ and push the same element to the destination List stored at _dstkey_</code></li></ul>
<h2><aname="Commands operating on sets">Commands operating on sets</a></h2><ul><li><ahref="SaddCommand.html">SADD</a><i>key</i><i>member</i><codename="code"class="python">Add the specified member to the Set value at key</code></li><li><ahref="SremCommand.html">SREM</a><i>key</i><i>member</i><codename="code"class="python">Remove the specified member from the Set value at key</code></li><li><ahref="SpopCommand.html">SPOP</a><i>key</i><codename="code"class="python">Remove and return (pop) a random element from the Set value at key</code></li><li><ahref="SmoveCommand.html">SMOVE</a><i>srckey</i><i>dstkey</i><i>member</i><codename="code"class="python">Move the specified member from one Set to another atomically</code></li><li><ahref="ScardCommand.html">SCARD</a><i>key</i><codename="code"class="python">Return the number of elements (the cardinality) of the Set at key</code></li><li><ahref="SismemberCommand.html">SISMEMBER</a><i>key</i><i>member</i><codename="code"class="python">Test if the specified value is a member of the Set at key</code></li><li><ahref="SinterCommand.html">SINTER</a><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Return the intersection between the Sets stored at key1, key2, ..., keyN</code></li><li><ahref="SinterstoreCommand.html">SINTERSTORE</a><i>dstkey</i><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Compute the intersection between the Sets stored at key1, key2, ..., keyN, and store the resulting Set at dstkey</code></li><li><ahref="SunionCommand.html">SUNION</a><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Return the union between the Sets stored at key1, key2, ..., keyN</code></li><li><ahref="SunionstoreCommand.html">SUNIONSTORE</a><i>dstkey</i><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Compute the union between the Sets stored at key1, key2, ..., keyN, and store the resulting Set at dstkey</code></li><li><ahref="SdiffCommand.html">SDIFF</a><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Return the difference between the Set stored at key1 and all the Sets key2, ..., keyN</code></li><li><ahref="SdiffstoreCommand.html">SDIFFSTORE</a><i>dstkey</i><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Compute the difference between the Set key1 and all the Sets key2, ..., keyN, and store the resulting Set at dstkey</code></li><li><ahref="SmembersCommand.html">SMEMBERS</a><i>key</i><codename="code"class="python">Return all the members of the Set value at key</code></li><li><ahref="SrandmemberCommand.html">SRANDMEMBER</a><i>key</i><codename="code"class="python">Return a random member of the Set value at key</code></li></ul>
<h2><aname="Commands operating on sets">Commands operating on sets</a></h2><ul><li><ahref="SaddCommand.html">SADD</a><i>key</i><i>member</i><codename="code"class="python">Add the specified member to the Set value at key</code></li><li><ahref="SremCommand.html">SREM</a><i>key</i><i>member</i><codename="code"class="python">Remove the specified member from the Set value at key</code></li><li><ahref="SpopCommand.html">SPOP</a><i>key</i><codename="code"class="python">Remove and return (pop) a random element from the Set value at key</code></li><li><ahref="SmoveCommand.html">SMOVE</a><i>srckey</i><i>dstkey</i><i>member</i><codename="code"class="python">Move the specified member from one Set to another atomically</code></li><li><ahref="ScardCommand.html">SCARD</a><i>key</i><codename="code"class="python">Return the number of elements (the cardinality) of the Set at key</code></li><li><ahref="SismemberCommand.html">SISMEMBER</a><i>key</i><i>member</i><codename="code"class="python">Test if the specified value is a member of the Set at key</code></li><li><ahref="SinterCommand.html">SINTER</a><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Return the intersection between the Sets stored at key1, key2, ..., keyN</code></li><li><ahref="SinterstoreCommand.html">SINTERSTORE</a><i>dstkey</i><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Compute the intersection between the Sets stored at key1, key2, ..., keyN, and store the resulting Set at dstkey</code></li><li><ahref="SunionCommand.html">SUNION</a><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Return the union between the Sets stored at key1, key2, ..., keyN</code></li><li><ahref="SunionstoreCommand.html">SUNIONSTORE</a><i>dstkey</i><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Compute the union between the Sets stored at key1, key2, ..., keyN, and store the resulting Set at dstkey</code></li><li><ahref="SdiffCommand.html">SDIFF</a><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Return the difference between the Set stored at key1 and all the Sets key2, ..., keyN</code></li><li><ahref="SdiffstoreCommand.html">SDIFFSTORE</a><i>dstkey</i><i>key1</i><i>key2</i> ... <i>keyN</i><codename="code"class="python">Compute the difference between the Set key1 and all the Sets key2, ..., keyN, and store the resulting Set at dstkey</code></li><li><ahref="SmembersCommand.html">SMEMBERS</a><i>key</i><codename="code"class="python">Return all the members of the Set value at key</code></li><li><ahref="SrandmemberCommand.html">SRANDMEMBER</a><i>key</i><codename="code"class="python">Return a random member of the Set value at key</code></li></ul>
<h2><aname="Commands operating on sorted sets (zsets, Redis version >">Commands operating on sorted sets (zsets, Redis version ></a></h2> 1.1) ==<br/><br/><ul><li><ahref="ZaddCommand.html">ZADD</a><i>key</i><i>score</i><i>member</i><codename="code"class="python">Add the specified member to the Set value at key or update the score if it already exist</code></li><li><ahref="ZremCommand.html">ZREM</a><i>key</i><i>member</i><codename="code"class="python">Remove the specified member from the Set value at key</code></li><li><ahref="ZrangeCommand.html">ZRANGE</a><i>key</i><i>start</i><i>end</i><codename="code"class="python">Return a range of elements from the sorted set at key</code></li><li><ahref="ZrangeCommand.html">ZREVRANGE</a><i>key</i><i>start</i><i>end</i><codename="code"class="python">Return a range of elements from the sorted set at key, exactly like ZRANGE, but the sorted set is ordered in traversed in reverse order, from the greatest to the smallest score</code></li><li><ahref="ZrangebyscoreCommand.html">ZRANGEBYSCORE</a><i>key</i><i>min</i><i>max</i><codename="code"class="python">Return all the elements with score >= min and score <= max (a range query) from the sorted set</code></li><li><ahref="ZcardCommand.html">ZCARD</a><i>key</i><codename="code"class="python">Return the cardinality (number of elements) of the sorted set at key</code></li><li><ahref="ZscoreCommand.html">ZSCORE</a><i>key</i><i>element</i><codename="code"class="python">Return the score associated with the specified element of the sorted set at key</code></li><li><ahref="ZremrangebyscoreCommand.html">ZREMRANGEBYSCORE</a><i>key</i><i>min</i><i>max</i><codename="code"class="python">Remove all the elements with score >= min and score <= max from the sorted set</code></li></ul>
<h2><aname="Commands operating on sorted sets (zsets, Redis version >">Commands operating on sorted sets (zsets, Redis version ></a></h2> 1.1) ==<br/><br/><ul><li><ahref="ZaddCommand.html">ZADD</a><i>key</i><i>score</i><i>member</i><codename="code"class="python">Add the specified member to the Sorted Set value at key or update the score if it already exist</code></li><li><ahref="ZremCommand.html">ZREM</a><i>key</i><i>member</i><codename="code"class="python">Remove the specified member from the Sorted Set value at key</code></li><li><ahref="ZincrbyCommand.html">ZINCRBY</a><i>key</i><i>increment</i><i>member</i><codename="code"class="python">If the member already exists increment its score by _increment_, otherwise add the member setting _increment_ as score</code></li><li><ahref="ZrangeCommand.html">ZRANGE</a><i>key</i><i>start</i><i>end</i><codename="code"class="python">Return a range of elements from the sorted set at key</code></li><li><ahref="ZrangeCommand.html">ZREVRANGE</a><i>key</i><i>start</i><i>end</i><codename="code"class="python">Return a range of elements from the sorted set at key, exactly like ZRANGE, but the sorted set is ordered in traversed in reverse order, from the greatest to the smallest score</code></li><li><ahref="ZrangebyscoreCommand.html">ZRANGEBYSCORE</a><i>key</i><i>min</i><i>max</i><codename="code"class="python">Return all the elements with score >= min and score <= max (a range query) from the sorted set</code></li><li><ahref="ZcardCommand.html">ZCARD</a><i>key</i><codename="code"class="python">Return the cardinality (number of elements) of the sorted set at key</code></li><li><ahref="ZscoreCommand.html">ZSCORE</a><i>key</i><i>element</i><codename="code"class="python">Return the score associated with the specified element of the sorted set at key</code></li><li><ahref="ZremrangebyscoreCommand.html">ZREMRANGEBYSCORE</a><i>key</i><i>min</i><i>max</i><codename="code"class="python">Remove all the elements with score >= min and score <= max from the sorted set</code></li></ul>
<h2><aname="Sorting">Sorting</a></h2><ul><li><ahref="SortCommand.html">SORT</a><i>key</i> BY <i>pattern</i> LIMIT <i>start</i><i>end</i> GET <i>pattern</i> ASC|DESC ALPHA <codename="code"class="python">Sort a Set or a List accordingly to the specified parameters</code></li></ul>
<h2><aname="Sorting">Sorting</a></h2><ul><li><ahref="SortCommand.html">SORT</a><i>key</i> BY <i>pattern</i> LIMIT <i>start</i><i>end</i> GET <i>pattern</i> ASC|DESC ALPHA <codename="code"class="python">Sort a Set or a List accordingly to the specified parameters</code></li></ul>
<h2><aname="Persistence control commands">Persistence control commands</a></h2><ul><li><ahref="SaveCommand.html">SAVE</a><codename="code"class="python">Synchronously save the DB on disk</code></li><li><ahref="BgsaveCommand.html">BGSAVE</a><codename="code"class="python">Asynchronously save the DB on disk</code></li><li><ahref="LastsaveCommand.html">LASTSAVE</a><codename="code"class="python">Return the UNIX time stamp of the last successfully saving of the dataset on disk</code></li><li><ahref="ShutdownCommand.html">SHUTDOWN</a><codename="code"class="python">Synchronously save the DB on disk, then shutdown the server</code></li><li><ahref="BgrewriteaofCommand.html">BGREWRITEAOF</a><codename="code"class="python">Rewrite the append only file in background when it gets too big</code></li></ul>
<h2><aname="Persistence control commands">Persistence control commands</a></h2><ul><li><ahref="SaveCommand.html">SAVE</a><codename="code"class="python">Synchronously save the DB on disk</code></li><li><ahref="BgsaveCommand.html">BGSAVE</a><codename="code"class="python">Asynchronously save the DB on disk</code></li><li><ahref="LastsaveCommand.html">LASTSAVE</a><codename="code"class="python">Return the UNIX time stamp of the last successfully saving of the dataset on disk</code></li><li><ahref="ShutdownCommand.html">SHUTDOWN</a><codename="code"class="python">Synchronously save the DB on disk, then shutdown the server</code></li><li><ahref="BgrewriteaofCommand.html">BGREWRITEAOF</a><codename="code"class="python">Rewrite the append only file in background when it gets too big</code></li></ul>
<h2><aname="Remote server control commands">Remote server control commands</a></h2><ul><li><ahref="InfoCommand.html">INFO</a><codename="code"class="python">Provide information and statistics about the server</code></li><li><ahref="MonitorCommand.html">MONITOR</a><codename="code"class="python">Dump all the received requests in real time</code></li><li><ahref="SlaveofCommand.html">SLAVEOF</a><codename="code"class="python">Change the replication settings</code></li></ul>
<h2><aname="Remote server control commands">Remote server control commands</a></h2><ul><li><ahref="InfoCommand.html">INFO</a><codename="code"class="python">Provide information and statistics about the server</code></li><li><ahref="MonitorCommand.html">MONITOR</a><codename="code"class="python">Dump all the received requests in real time</code></li><li><ahref="SlaveofCommand.html">SLAVEOF</a><codename="code"class="python">Change the replication settings</code></li></ul>
<i>Time complexity: O(n) (with n being the number of keys in the DB, and assuming keys and pattern of limited length)</i><blockquote>Returns all the keys matching the glob-style <i>pattern</i> asspace separated strings. For example if you have in thedatabase the keys "foo" and "foobar" the command "KEYS foo<codename="code"class="python">*</code>"will return "foo foobar".</blockquote>
<i>Time complexity: O(n) (with n being the number of keys in the DB, and assuming keys and pattern of limited length)</i><blockquote>Returns all the keys matching the glob-style <i>pattern</i> asspace separated strings. For example if you have in thedatabase the keys "foo" and "foobar" the command "KEYS foo<codename="code"class="python">*</code>"will return "foo foobar".</blockquote>
<blockquote>Note that while the time complexity for this operation is O(n)the constant times are pretty low. For example Redis runningon an entry level laptop can scan a 1 million keys databasein 40 milliseconds. Still it's better to consider this one ofthe slow commands that may ruin the DB performance if not usedwith care.</blockquote>
<blockquote>Note that while the time complexity for this operation is O(n)the constant times are pretty low. For example Redis runningon an entry level laptop can scan a 1 million keys databasein 40 milliseconds. <b>Still it's better to consider this one of
<blockquote>the slow commands that may ruin the DB performance if not usedwith care*.</blockquote>
<blockquote>In other words this command is intended only for debugging and *special* operations like creating a script to change the DB schema. Don't use it in your normal code. Use Redis <ahref="Sets.html">Sets</a> in order to group together a subset of objects.</blockquote>
Glob style patterns examples:
Glob style patterns examples:
<ul><li> h?llo will match hello hallo hhllo</li><li> h<b>llo will match hllo heeeello
<blockquote>* h?llo will match hello hallo hhllo* h*llo will match hllo heeeello* h<codename="code"class="python">[</code>ae<codename="code"class="python">]</code>llo will match hello and hallo, but not hillo</blockquote>Use \ to escape special chars if you want to match them verbatim.<h2><aname="Return value">Return value</a></h2><ahref="ReplyTypes.html">Bulk reply</a>, specifically a string in the form of space separated list of keys. Note that most client libraries will return an Array of keys and not a single string with space separated keys (that is, split by "" is performed in the client library usually).</b></blockquote>
<blockquote>* h<ahref="ae.html">ae</a>llo will match hello and hallo, but not hillo</blockquote>Use \ to escape special chars if you want to match them verbatim.<h2><aname="Return value">Return value</a></h2><ahref="ReplyTypes.html">Bulk reply</a>, specifically a string in the form of space separated list of keys. Note that most client libraries will return an Array of keys and not a single string with space separated keys (that is, split by "" is performed in the client library usually).
== Sorted Set Commands ==<br/><br/><ul><li><ahref="ZaddCommand.html">ZADD</a></li><li><ahref="ZremCommand.html">ZREM</a></li><li><ahref="ZrangeCommand.html">ZRANGE</a></li><li><ahref="ZrangeCommand.html">ZREVRANGE</a></li><li><ahref="ZrangebyscoreCommand.html">ZRANGEBYSCORE</a></li><li><ahref="ZcardCommand.html">ZCARD</a></li><li><ahref="ZscoreCommand.html">ZSCORE</a></li><li><ahref="SortCommand.html">SORT</a></li></ul>
== Sorted Set Commands ==<br/><br/><ul><li><ahref="ZaddCommand.html">ZADD</a></li><li><ahref="ZremCommand.html">ZREM</a></li><li><ahref="ZincrbyCommand.html">ZINCRBY</a></li><li><ahref="ZrangeCommand.html">ZRANGE</a></li><li><ahref="ZrangeCommand.html">ZREVRANGE</a></li><li><ahref="ZrangebyscoreCommand.html">ZRANGEBYSCORE</a></li><li><ahref="ZcardCommand.html">ZCARD</a></li><li><ahref="ZscoreCommand.html">ZSCORE</a></li><li><ahref="SortCommand.html">SORT</a></li></ul>
<h1><aname="Redis Sponsorship History">Redis Sponsorship History</a></h1>This is a list of companies that sponsorship Redis developments, with details about the sponsored features. <b>Thanks for helping the project!</b>.<br/><br/>If your company is considering a sponsorship please read the <ahref="SponsorshipHowto.html">How to Sponsor</a> page.<br/><br/><ul><li><ahref="http://www.hitmeister.de/"target="_blank"><imgsrc="http://redis.googlecode.com/files/logo_hitmeister_2.png"border="0"></img></a><br></br> 15 Dec 2009, part of Redis Cluster.</li><li><ahref="http://engineyard.com"target="_blank"><imgsrc="http://redis.googlecode.com/files/engine_yard_logo.jpg"border="0"></img></a><br></br> 13 Dec 2009, for blocking POP (BLPOP) and part of the Virtual Memory implementation.</li></ul>
<h1><aname="Redis Sponsorship History">Redis Sponsorship History</a></h1>This is a list of companies that sponsorship Redis developments, with details about the sponsored features. <b>Thanks for helping the project!</b>.<br/><br/>If your company is considering a sponsorship please read the <ahref="SponsorshipHowto.html">How to Sponsor</a> page.<br/><br/><ul><li><ahref="http://citrusbyte.com"target="_blank"><imgsrc="http://redis.googlecode.com/files/citrusbyte_logo.png"border="0"></img></a><br></br> 18 Dec 2009, part of Virtual Memory.</li><li><ahref="http://www.hitmeister.de/"target="_blank"><imgsrc="http://redis.googlecode.com/files/logo_hitmeister_2.png"border="0"></img></a><br></br> 15 Dec 2009, part of Redis Cluster.</li><li><ahref="http://engineyard.com"target="_blank"><imgsrc="http://redis.googlecode.com/files/engine_yard_logo.jpg"border="0"></img></a><br></br> 13 Dec 2009, for blocking POP (BLPOP) and part of the Virtual Memory implementation.</li></ul>
<b>Also thaks to the following people or organizations that donated to the Project:</b>
<ul><li> Emil Vladev</li><li><ahref="http://bradjasper.com/"target="_blank">Brad Jasper</a></li><li><ahref="http://www.mrkris.com/"target="_blank">Mrkris</a></li></ul>
<i>Time complexity O(log(N)) with N being the number of elements in the sorted set</i><blockquote>If <i>member</i> already exists in the sorted set adds the <i>increment</i> to its scoreand updates the position of the element in the sorted set accordingly.If <i>member</i> does not already exist in the sorted set it is added with_increment_ as score (that is, like if the previous score was virtually zero).If <i>key</i> does not exist a new sorted set with the specified_member_ as sole member is crated. If the key exists but does not hold asorted set value an error is returned.</blockquote>
<blockquote>The score value can be the string representation of a double precision floatingpoint number. It's possible to provide a negative value to perform a decrement.</blockquote>
<blockquote>For an introduction to sorted sets check the <ahref="IntroductionToRedisDataTypes.html">Introduction to Redis data types</a> page.</blockquote>