Permalink
Browse files

html doc readded

  • Loading branch information...
1 parent 81d4564 commit 8fb13ce816b85ac414921ecca420671bf74a3eea @antirez antirez committed Dec 23, 2009
Showing with 5,040 additions and 0 deletions.
  1. +40 −0 doc/AppendOnlyFileHowto.html
  2. +39 −0 doc/AuthCommand.html
  3. +129 −0 doc/Benchmarks.html
  4. +41 −0 doc/BgrewriteaofCommand.html
  5. +39 −0 doc/BgsaveCommand.html
  6. +44 −0 doc/CommandReference.html
  7. +42 −0 doc/Comparisons.html
  8. +38 −0 doc/Configuration.html
  9. +36 −0 doc/ConnectionHandlingSidebar.html
  10. +36 −0 doc/ControlCommandsSidebar.html
  11. +38 −0 doc/Credits.html
  12. +38 −0 doc/DbsizeCommand.html
  13. +42 −0 doc/DelCommand.html
  14. +37 −0 doc/DesignPatterns.html
  15. +42 −0 doc/ExistsCommand.html
  16. +68 −0 doc/ExpireCommand.html
  17. +71 −0 doc/FAQ.html
  18. +38 −0 doc/Features.html
  19. +39 −0 doc/FlushallCommand.html
  20. +39 −0 doc/FlushdbCommand.html
  21. +37 −0 doc/FromSqlToDataStructures.html
  22. +36 −0 doc/GenericCommandsSidebar.html
  23. +39 −0 doc/GetCommand.html
  24. +38 −0 doc/GetsetCommand.html
  25. +44 −0 doc/IncrCommand.html
  26. +48 −0 doc/InfoCommand.html
  27. +151 −0 doc/IntroductionToRedisDataTypes.html
  28. +42 −0 doc/KeysCommand.html
  29. +39 −0 doc/LastsaveCommand.html
  30. +41 −0 doc/LindexCommand.html
  31. +36 −0 doc/ListCommandsSidebar.html
  32. +42 −0 doc/Lists.html
  33. +41 −0 doc/LlenCommand.html
  34. +41 −0 doc/LpopCommand.html
  35. +42 −0 doc/LrangeCommand.html
  36. +41 −0 doc/LremCommand.html
  37. +39 −0 doc/LsetCommand.html
  38. +47 −0 doc/LtrimCommand.html
  39. +52 −0 doc/MgetCommand.html
  40. +63 −0 doc/MonitorCommand.html
  41. +42 −0 doc/MoveCommand.html
  42. +44 −0 doc/MsetCommand.html
  43. +39 −0 doc/ObjectHashMappers.html
  44. +36 −0 doc/Pipelining.html
  45. +38 −0 doc/ProgrammingExamples.html
  46. +142 −0 doc/ProtocolSpecification.html
  47. +67 −0 doc/QuickStart.html
  48. +38 −0 doc/QuitCommand.html
  49. +88 −0 doc/README.html
  50. +39 −0 doc/RandomkeyCommand.html
  51. +67 −0 doc/Redis0100ChangeLog.html
  52. +56 −0 doc/Redis0900ChangeLog.html
  53. +36 −0 doc/Redis_1_2_0_Changelog.html
  54. +39 −0 doc/RenameCommand.html
  55. +42 −0 doc/RenamenxCommand.html
  56. +41 −0 doc/ReplicationHowto.html
  57. +42 −0 doc/ReplyTypes.html
  58. +38 −0 doc/RoadMap.html
  59. +44 −0 doc/RpoplpushCommand.html
  60. +40 −0 doc/RpushCommand.html
  61. +41 −0 doc/SaddCommand.html
  62. +39 −0 doc/SaveCommand.html
  63. +41 −0 doc/ScardCommand.html
  64. +45 −0 doc/SdiffCommand.html
  65. +38 −0 doc/SdiffstoreCommand.html
  66. +39 −0 doc/SelectCommand.html
  67. +39 −0 doc/SetCommand.html
  68. +36 −0 doc/SetCommandsSidebar.html
  69. +51 −0 doc/SetnxCommand.html
  70. +36 −0 doc/Sets.html
  71. +39 −0 doc/ShutdownCommand.html
  72. +36 −0 doc/SideBar.html
  73. +40 −0 doc/SinterCommand.html
  74. +39 −0 doc/SinterstoreCommand.html
  75. +42 −0 doc/SismemberCommand.html
  76. +41 −0 doc/SlaveofCommand.html
  77. +39 −0 doc/SmembersCommand.html
  78. +44 −0 doc/SmoveCommand.html
  79. +68 −0 doc/SortCommand.html
  80. +36 −0 doc/SortedSetCommandsSidebar.html
  81. +36 −0 doc/SortedSets.html
  82. +38 −0 doc/Speed.html
  83. +38 −0 doc/SponsorshipHistory.html
  84. +37 −0 doc/SponsorshipHowto.html
  85. +40 −0 doc/SpopCommand.html
  86. +40 −0 doc/SrandmemberCommand.html
  87. +42 −0 doc/SremCommand.html
  88. +36 −0 doc/StringCommandsSidebar.html
  89. +37 −0 doc/Strings.html
  90. +40 −0 doc/SunionCommand.html
  91. +38 −0 doc/SunionstoreCommand.html
  92. +59 −0 doc/SupportedLanguages.html
  93. +37 −0 doc/SupportedPlatforms.html
  94. +38 −0 doc/TemplateCommand.html
  95. +38 −0 doc/TtlCommand.html
  96. +250 −0 doc/TwitterAlikeExample.html
  97. +44 −0 doc/TypeCommand.html
  98. +39 −0 doc/UnstableSource.html
  99. +43 −0 doc/ZaddCommand.html
  100. +41 −0 doc/ZcardCommand.html
  101. +42 −0 doc/ZincrbyCommand.html
  102. +42 −0 doc/ZrangeCommand.html
  103. +41 −0 doc/ZrangebyscoreCommand.html
  104. +42 −0 doc/ZremCommand.html
  105. +39 −0 doc/ZremrangebyscoreCommand.html
  106. +41 −0 doc/ZscoreCommand.html
  107. +40 −0 doc/index.html
@@ -0,0 +1,40 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+ <head>
+ <link type="text/css" rel="stylesheet" href="style.css" />
+ </head>
+ <body>
+ <div id="page">
+
+ <div id='header'>
+ <a href="index.html">
+ <img style="border:none" alt="Redis Documentation" src="redis.png">
+ </a>
+ </div>
+
+ <div id="pagecontent">
+ <div class="index">
+<!-- This is a (PRE) block. Make sure it's left aligned or your toc title will be off. -->
+<b>AppendOnlyFileHowto: Contents</b><br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#General Information">General Information</a><br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Log rewriting">Log rewriting</a><br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Wait... but how does this work?">Wait... but how does this work?</a><br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#How durable is the append only file?">How durable is the append only file?</a>
+ </div>
+
+ <h1 class="wikiname">AppendOnlyFileHowto</h1>
+
+ <div class="summary">
+
+ </div>
+
+ <div class="narrow">
+ &iuml;&raquo;&iquest;= Append Only File HOWTO =<h2><a name="General Information">General Information</a></h2>Append only file is an alternative durability option for Redis. What this mean? Let's start with some fact:<br/><br/><ul><li> For default Redis saves snapshots of the dataset on disk, in a binary file called dump.rdb (by default at least). For instance you can configure Redis to save the dataset every 60 seconds if there are at least 100 changes in the dataset, or every 1000 seconds if there is at least a single change in the dataset. This is known as &quot;Snapshotting&quot;.</li><li> Snapshotting is not very durable. If your computer running Redis stops, your power line fails, or you write killall -9 redis-server for a mistake, the latest data written on Redis will get lost. There are applications where this is not a big deal. There are applications where this is not acceptable and Redis <b>was</b> not an option for this applications.</li></ul>
+What is the solution? To use append only file as alternative to snapshotting. How it works?<br/><br/><ul><li> It is an 1.1 only feature.</li><li> You have to turn it on editing the configuration file. Just make sure you have &quot;appendonly yes&quot; somewhere.</li><li> Append only files work this way: every time Redis receive a command that changes the dataset (for instance a SET or LPUSH command) it appends this command in the append only file. When you restart Redis it will first <b>re-play</b> the append only file to rebuild the state.</li></ul>
+<h2><a name="Log rewriting">Log rewriting</a></h2>As you can guess... the append log file gets bigger and bigger, every time there is a new operation changing the dataset. Even if you set always the same key &quot;mykey&quot; to the values of &quot;1&quot;, &quot;2&quot;, &quot;3&quot;, ... up to 10000000000 in the end you'll have just a single key in the dataset, just a few bytes! but how big will be the append log file? Very very big.<br/><br/>So Redis supports an interesting feature: it is able to rebuild the append log file, in background, without to stop processing client commands. The key is the command <a href="BGREWRITEAOF.html">BGREWRITEAOF</a>. This command basically is able to use the dataset in memory in order to rewrite the shortest sequence of commands able to rebuild the exact dataset that is currently in memory.<br/><br/>So from time to time when the log gets too big, try this command. It's safe as if it fails you will not lost your old log (but you can make a backup copy given that currently 1.1 is still in beta!).<h2><a name="Wait... but how does this work?">Wait... but how does this work?</a></h2>Basically it uses the same fork() copy-on-write trick that snapshotting already uses. This is how the algorithm works:<br/><br/><ul><li> Redis forks, so now we have a child and a parent.</li><li> The child starts writing the new append log file in a temporary file.</li><li> The parent accumulates all the new changes in an in-memory buffer.</li><li> When the child finished to rewrite the file, the parent gets a signal, and append the in-memory buffer at the end of the file generated by the child.</li><li> Profit! Now Redis atomically renames the old file into the new one, and starts appending new data into the new file.</li></ul>
+<h2><a name="How durable is the append only file?">How durable is the append only file?</a></h2>Check redis.conf, you can configure how many times Redis will fsync() data on disk. There are three options:<br/><br/><ul><li> Fsync() every time a new command is appended to the append log file. Very very slow, very safe.</li><li> Fsync() one time every second. Fast enough, and you can lose 1 second of data if there is a disaster.</li><li> Never fsync(), just put your data in the hands of the Operating System. The faster and unsafer method.</li></ul>
+Warning: by default Redis will fsync() after <b>every command</b>! This is because the Redis authors want to ship a default configuration that is the safest pick. But the best compromise for most datasets is to fsync() one time every second.
+ </div>
+
+ </div>
+ </div>
+ </body>
+</html>
+
View
@@ -0,0 +1,39 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+ <head>
+ <link type="text/css" rel="stylesheet" href="style.css" />
+ </head>
+ <body>
+ <div id="page">
+
+ <div id='header'>
+ <a href="index.html">
+ <img style="border:none" alt="Redis Documentation" src="redis.png">
+ </a>
+ </div>
+
+ <div id="pagecontent">
+ <div class="index">
+<!-- This is a (PRE) block. Make sure it's left aligned or your toc title will be off. -->
+<b>AuthCommand: Contents</b><br>&nbsp;&nbsp;<a href="#AUTH _password_">AUTH _password_</a><br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Return value">Return value</a>
+ </div>
+
+ <h1 class="wikiname">AuthCommand</h1>
+
+ <div class="summary">
+
+ </div>
+
+ <div class="narrow">
+ &iuml;&raquo;&iquest;#sidebar <a href="ConnectionHandlingSidebar.html">ConnectionHandlingSidebar</a><h1><a name="AUTH _password_">AUTH _password_</a></h1><blockquote>Request for authentication in a password protected Redis server.A Redis server can be instructed to require a password before to allow clientsto issue commands. This is done using the <i>requirepass</i> directive in theRedis configuration file.</blockquote>
+<blockquote>If the password given by the client is correct the server replies withan OK status code reply and starts accepting commands from the client.Otherwise an error is returned and the clients needs to try a new password.Note that for the high performance nature of Redis it is possible to trya lot of passwords in parallel in very short time, so make sure to generatea strong and very long password so that this attack is infeasible.</blockquote>
+<h2><a name="Return value">Return value</a></h2><a href="ReplyTypes.html">Status code reply</a>
+
+ </div>
+
+ </div>
+ </div>
+ </body>
+</html>
+
View
@@ -0,0 +1,129 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+ <head>
+ <link type="text/css" rel="stylesheet" href="style.css" />
+ </head>
+ <body>
+ <div id="page">
+
+ <div id='header'>
+ <a href="index.html">
+ <img style="border:none" alt="Redis Documentation" src="redis.png">
+ </a>
+ </div>
+
+ <div id="pagecontent">
+ <div class="index">
+<!-- This is a (PRE) block. Make sure it's left aligned or your toc title will be off. -->
+<b>Benchmarks: Contents</b><br>&nbsp;&nbsp;<a href="#How Fast is Redis?">How Fast is Redis?</a><br>&nbsp;&nbsp;<a href="#Latency percentiles">Latency percentiles</a>
+ </div>
+
+ <h1 class="wikiname">Benchmarks</h1>
+
+ <div class="summary">
+
+ </div>
+
+ <div class="narrow">
+ <h1><a name="How Fast is Redis?">How Fast is Redis?</a></h1>Redis includes the <code name="code" class="python">redis-benchmark</code> utility that simulates <a href="SETs.html">SETs</a>/GETs done by N clients at the same time sending M total queries (it is similar to the Apache's <code name="code" class="python">ab</code> utility). Below you'll find the full output of the benchmark executed against a Linux box.<br/><br/><ul><li> The test was done with 50 simultaneous clients performing 100000 requests.</li><li> The value SET and GET is a 256 bytes string.</li><li> The Linux box is running <b>Linux 2.6</b>, it's <b>Xeon X3320 2.5Ghz</b>.</li><li> Text executed using the loopback interface (127.0.0.1).</li></ul>
+Results: <b>about 110000 <a href="SETs.html">SETs</a> per second, about 81000 GETs per second.</b><h1><a name="Latency percentiles">Latency percentiles</a></h1><pre class="codeblock python" name="code">
+./redis-benchmark -n 100000
+
+====== SET ======
+ 100007 requests completed in 0.88 seconds
+ 50 parallel clients
+ 3 bytes payload
+ keep alive: 1
+
+58.50% &lt;= 0 milliseconds
+99.17% &lt;= 1 milliseconds
+99.58% &lt;= 2 milliseconds
+99.85% &lt;= 3 milliseconds
+99.90% &lt;= 6 milliseconds
+100.00% &lt;= 9 milliseconds
+114293.71 requests per second
+
+====== GET ======
+ 100000 requests completed in 1.23 seconds
+ 50 parallel clients
+ 3 bytes payload
+ keep alive: 1
+
+43.12% &lt;= 0 milliseconds
+96.82% &lt;= 1 milliseconds
+98.62% &lt;= 2 milliseconds
+100.00% &lt;= 3 milliseconds
+81234.77 requests per second
+
+====== INCR ======
+ 100018 requests completed in 1.46 seconds
+ 50 parallel clients
+ 3 bytes payload
+ keep alive: 1
+
+32.32% &lt;= 0 milliseconds
+96.67% &lt;= 1 milliseconds
+99.14% &lt;= 2 milliseconds
+99.83% &lt;= 3 milliseconds
+99.88% &lt;= 4 milliseconds
+99.89% &lt;= 5 milliseconds
+99.96% &lt;= 9 milliseconds
+100.00% &lt;= 18 milliseconds
+68458.59 requests per second
+
+====== LPUSH ======
+ 100004 requests completed in 1.14 seconds
+ 50 parallel clients
+ 3 bytes payload
+ keep alive: 1
+
+62.27% &lt;= 0 milliseconds
+99.74% &lt;= 1 milliseconds
+99.85% &lt;= 2 milliseconds
+99.86% &lt;= 3 milliseconds
+99.89% &lt;= 5 milliseconds
+99.93% &lt;= 7 milliseconds
+99.96% &lt;= 9 milliseconds
+100.00% &lt;= 22 milliseconds
+100.00% &lt;= 208 milliseconds
+88109.25 requests per second
+
+====== LPOP ======
+ 100001 requests completed in 1.39 seconds
+ 50 parallel clients
+ 3 bytes payload
+ keep alive: 1
+
+54.83% &lt;= 0 milliseconds
+97.34% &lt;= 1 milliseconds
+99.95% &lt;= 2 milliseconds
+99.96% &lt;= 3 milliseconds
+99.96% &lt;= 4 milliseconds
+100.00% &lt;= 9 milliseconds
+100.00% &lt;= 208 milliseconds
+71994.96 requests per second
+</pre>Notes: changing the payload from 256 to 1024 or 4096 bytes does not change the numbers significantly (but reply packets are glued together up to 1024 bytes so GETs may be slower with big payloads). The same for the number of clients, from 50 to 256 clients I got the same numbers. With only 10 clients it starts to get a bit slower.<br/><br/>You can expect different results from different boxes. For example a low profile box like <b>Intel core duo T5500 clocked at 1.66Ghz running Linux 2.6</b> will output the following:
+<pre class="codeblock python python" name="code">
+ ./redis-benchmark -q -n 100000
+SET: 53684.38 requests per second
+GET: 45497.73 requests per second
+INCR: 39370.47 requests per second
+LPUSH: 34803.41 requests per second
+LPOP: 37367.20 requests per second
+</pre>Another one using a 64 bit box, a Xeon L5420 clocked at 2.5 Ghz:<br/><br/><pre class="codeblock python python python" name="code">
+ ./redis-benchmark -q -n 100000
+PING: 111731.84 requests per second
+SET: 108114.59 requests per second
+GET: 98717.67 requests per second
+INCR: 95241.91 requests per second
+LPUSH: 104712.05 requests per second
+LPOP: 93722.59 requests per second
+</pre>
+ </div>
+
+ </div>
+ </div>
+ </body>
+</html>
+
@@ -0,0 +1,41 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+ <head>
+ <link type="text/css" rel="stylesheet" href="style.css" />
+ </head>
+ <body>
+ <div id="page">
+
+ <div id='header'>
+ <a href="index.html">
+ <img style="border:none" alt="Redis Documentation" src="redis.png">
+ </a>
+ </div>
+
+ <div id="pagecontent">
+ <div class="index">
+<!-- This is a (PRE) block. Make sure it's left aligned or your toc title will be off. -->
+<b>BgrewriteaofCommand: Contents</b><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#BGREWRITEAOF">BGREWRITEAOF</a><br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Return value">Return value</a>
+ </div>
+
+ <h1 class="wikiname">BgrewriteaofCommand</h1>
+
+ <div class="summary">
+
+ </div>
+
+ <div class="narrow">
+ &iuml;&raquo;&iquest;#sidebar <a href="ControlCommandsSidebar.html">ControlCommandsSidebar</a><h3><a name="BGREWRITEAOF">BGREWRITEAOF</a></h3>
+<blockquote>Please for detailed information about the Redis Append Only File check<a href="AppendOnlyFileHowto.html">the Append Only File Howto</a>.</blockquote>
+<blockquote>BGREWRITEAOF rewrites the Append Only File in background when it gets toobig. The Redis Append Only File is a Journal, so every operation modifyingthe dataset is logged in the Append Only File (and replayed at startup).This means that the Append Only File always grows. In order to rebuildits content the BGREWRITEAOF creates a new version of the append only filestarting directly form the dataset in memory in order to guarantee thegeneration of the minimal number of commands needed to rebuild the database.</blockquote>
+<blockquote>The <a href="AppendOnlyFileHowto.html">Append Only File Howto</a> contains further details.</blockquote>
+<h2><a name="Return value">Return value</a></h2><a href="ReplyTypes.html">Status code reply</a>
+
+ </div>
+
+ </div>
+ </div>
+ </body>
+</html>
+
View
@@ -0,0 +1,39 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+ <head>
+ <link type="text/css" rel="stylesheet" href="style.css" />
+ </head>
+ <body>
+ <div id="page">
+
+ <div id='header'>
+ <a href="index.html">
+ <img style="border:none" alt="Redis Documentation" src="redis.png">
+ </a>
+ </div>
+
+ <div id="pagecontent">
+ <div class="index">
+<!-- This is a (PRE) block. Make sure it's left aligned or your toc title will be off. -->
+<b>BgsaveCommand: Contents</b><br>&nbsp;&nbsp;<a href="#BGSAVE">BGSAVE</a><br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#Return value">Return value</a>
+ </div>
+
+ <h1 class="wikiname">BgsaveCommand</h1>
+
+ <div class="summary">
+
+ </div>
+
+ <div class="narrow">
+ &iuml;&raquo;&iquest;#sidebar <a href="ControlCommandsSidebar.html">ControlCommandsSidebar</a><h1><a name="BGSAVE">BGSAVE</a></h1>
+<blockquote>Save the DB in background. The OK code is immediately returned.Redis forks, the parent continues to server the clients, the childsaves the DB on disk then exit. A client my be able to check if theoperation succeeded using the <a href="LastsaveCommand.html">LASTSAVE</a> command.</blockquote>
+<h2><a name="Return value">Return value</a></h2><a href="ReplyTypes.html">Status code reply</a>
+
+ </div>
+
+ </div>
+ </div>
+ </body>
+</html>
+
Oops, something went wrong.

0 comments on commit 8fb13ce

Please sign in to comment.