<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="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><li><ahref="ExistsCommand.html">EXISTS</a><i>key</i><codename="code"class="python">test if a key exists</code></li><li><ahref="DelCommand.html">DEL</a><i>key</i><codename="code"class="python">delete a key</code></li><li><ahref="TypeCommand.html">TYPE</a><i>key</i><codename="code"class="python">return the type of the value stored at key</code></li></ul>
<h2><aname="Commands operating on the key space">Commands operating on the key space</a></h2><ul><li><ahref="KeysCommand.html">KEYS</a><i>pattern</i><codename="code"class="python">return all the keys matching a given pattern</code></li><li><ahref="RandomkeyCommand.html">RANDOMKEY</a><codename="code"class="python">return a random key from the key space</code></li><li><ahref="RenameCommand.html">RENAME</a><i>oldname</i><i>newname</i><codename="code"class="python">rename the old key in the new one, destroing the newname key if it already exists</code></li><li><ahref="RenamenxCommand.html">RENAMENX</a><i>oldname</i><i>newname</i><codename="code"class="python">rename the old key in the new one, if the newname key does not already exist</code></li><li><ahref="DbsizeCommand.html">DBSIZE</a><codename="code"class="python">return the number of keys in the current db</code></li><li><ahref="ExpireCommand.html">EXPIRE</a><codename="code"class="python">set a time to live in seconds on a key</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></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="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="SmembersCommand.html">SMEMBERS</a><i>key</i><codename="code"class="python">Return all the members 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="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></ul>
<h2><aname="Multiple databases handling commands">Multiple databases handling commands</a></h2><ul><li><ahref="SelectCommand.html">SELECT</a><i>index</i><codename="code"class="python">Select the DB having the specified index</code></li><li><ahref="MoveCommand.html">MOVE</a><i>key</i><i>dbindex</i><codename="code"class="python">Move the key from the currently selected DB to the DB having as index dbindex</code></li><li><ahref="FlushdbCommand.html">FLUSHDB</a><codename="code"class="python">Remove all the keys of the currently selected DB</code></li><li><ahref="FlushallCommand.html">FLUSHALL</a><codename="code"class="python">Remove all the keys from all the databases</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></ul>
<h1><aname="Credits">Credits</a></h1><ul><li> The Redis server was designed and written by <ahref="http://invece.org"target="_blank">Salvatore Sanfilippo (aka antirez)</a></li><li><ahref="http://brainspl.at/"target="_blank">Ezra Zygmuntowicz (aka ezmobius)</a> - Ruby client lib initial version and hacking</li><li><ahref="http://qix.it"target="_blank">Ludovico Magnocavallo (aka ludo)</a> - Python clinet lib</li><li><ahref="http://www.adroll.com/"target="_blank">Valentino Volonghi of Adroll</a> - Erlang client lib</li><li><b>brettbender</b> - found and fixed a but in sds.c that caused the server to crash at least on 64 bit systems, and anyway to be buggy since we used the same vararg thing against vsprintf without to call va_start and va_end every time.</li><li><ahref="http://www.rot13.org/~dpavlin"target="_blank">Dobrica Pavlinusic</a> - Perl client lib</li><li> Brian Hammond - AUTH command implementation</li><li><ahref="http://www.clorophilla.net/"target="_blank">Daniele Alessandri</a> - Lua client lib</li><li> Corey Stup - C99 cleanups</li><li> Taylor Weibley - Ruby client hacking </li><li> Bob Potter - Rearrange redisObject struct to reduce memory usage in 64bit environments</li></ul>
<h1><aname="Credits">Credits</a></h1><ul><li> The Redis server was designed and written by <ahref="http://invece.org"target="_blank">Salvatore Sanfilippo (aka antirez)</a></li><li><ahref="http://brainspl.at/"target="_blank">Ezra Zygmuntowicz (aka ezmobius)</a> - Ruby client lib initial version and hacking</li><li><ahref="http://qix.it"target="_blank">Ludovico Magnocavallo (aka ludo)</a> - Python clinet lib</li><li><ahref="http://www.adroll.com/"target="_blank">Valentino Volonghi of Adroll</a> - Erlang client lib</li><li><b>brettbender</b> - found and fixed a bug in sds.c that caused the server to crash at least on 64 bit systems, and anyway to be buggy since we used the same vararg thing against vsprintf without to call va_start and va_end every time.</li><li><ahref="http://www.rot13.org/~dpavlin"target="_blank">Dobrica Pavlinusic</a> - Perl client lib</li><li> Brian Hammond - AUTH command implementation, C++ client lib</li><li><ahref="http://www.clorophilla.net/"target="_blank">Daniele Alessandri</a> - Lua client lib</li><li> Corey Stup - C99 cleanups</li><li> Taylor Weibley - Ruby client improvements</li><li> Bob Potter - Rearrange redisObject struct to reduce memory usage in 64bit environments</li><li> Luca Guidi and Brian McKinney - Ruby client improvements</li><li> Aman Gupta - SDIFF / SDIFFSTORE, other Set operations improvements, ability to disable clients timeout.</li></ul>
p.s. sorry to take this file in sync is hard in this early days. Please drop me an email if I forgot to add your name here!
<i>Time complexity O(N) with N being the total number of elements of all the sets</i><blockquote>Return the members of a set resulting from the difference between the firstset provided and all the successive sets. Example:</blockquote>
<preclass="codeblock python"name="code">
key1 = x,a,b,c
key2 = c
key3 = a,d
SDIFF key1,key2,key3 => x,b
</pre><blockquote>Non existing keys are considered like empty sets.</blockquote>
<h2><aname="Return value">Return value</a></h2><ahref="ReplyTypes.html">Multi bulk reply</a>, specifically the list of common elements.<h2><aname="See also">See also</a></h2>
<i>Time complexity O(N) where N is the total number of elements in all the provided sets</i><blockquote>This commnad works exactly like SDIFF but instead of being returned the resulting set is sotred in <i>dstkey</i>.</blockquote>