| 1 | # Redis configuration file example |
| 2 | |
| 3 | # By default Redis does not run as a daemon. Use 'yes' if you need it. |
| 4 | # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. |
| 5 | daemonize no |
| 6 | |
| 7 | # When run as a daemon, Redis write a pid file in /var/run/redis.pid by default. |
| 8 | # You can specify a custom pid file location here. |
| 9 | pidfile /var/run/redis.pid |
| 10 | |
| 11 | # Accept connections on the specified port, default is 6379 |
| 12 | port 6379 |
| 13 | |
| 14 | # If you want you can bind a single interface, if the bind option is not |
| 15 | # specified all the interfaces will listen for connections. |
| 16 | # |
| 17 | # bind 127.0.0.1 |
| 18 | |
| 19 | # Close the connection after a client is idle for N seconds (0 to disable) |
| 20 | timeout 300 |
| 21 | |
| 22 | # Set server verbosity to 'debug' |
| 23 | # it can be one of: |
| 24 | # debug (a lot of information, useful for development/testing) |
| 25 | # verbose (many rarely useful info, but not a mess like the debug level) |
| 26 | # notice (moderately verbose, what you want in production probably) |
| 27 | # warning (only very important / critical messages are logged) |
| 28 | loglevel verbose |
| 29 | |
| 30 | # Specify the log file name. Also 'stdout' can be used to force |
| 31 | # the demon to log on the standard output. Note that if you use standard |
| 32 | # output for logging but daemonize, logs will be sent to /dev/null |
| 33 | logfile stdout |
| 34 | |
| 35 | # Set the number of databases. The default database is DB 0, you can select |
| 36 | # a different one on a per-connection basis using SELECT <dbid> where |
| 37 | # dbid is a number between 0 and 'databases'-1 |
| 38 | databases 16 |
| 39 | |
| 40 | ################################ SNAPSHOTTING ################################# |
| 41 | # |
| 42 | # Save the DB on disk: |
| 43 | # |
| 44 | # save <seconds> <changes> |
| 45 | # |
| 46 | # Will save the DB if both the given number of seconds and the given |
| 47 | # number of write operations against the DB occurred. |
| 48 | # |
| 49 | # In the example below the behaviour will be to save: |
| 50 | # after 900 sec (15 min) if at least 1 key changed |
| 51 | # after 300 sec (5 min) if at least 10 keys changed |
| 52 | # after 60 sec if at least 10000 keys changed |
| 53 | # |
| 54 | # Note: you can disable saving at all commenting all the "save" lines. |
| 55 | |
| 56 | save 900 1 |
| 57 | save 300 10 |
| 58 | save 60 10000 |
| 59 | |
| 60 | # Compress string objects using LZF when dump .rdb databases? |
| 61 | # For default that's set to 'yes' as it's almost always a win. |
| 62 | # If you want to save some CPU in the saving child set it to 'no' but |
| 63 | # the dataset will likely be bigger if you have compressible values or keys. |
| 64 | rdbcompression yes |
| 65 | |
| 66 | # The filename where to dump the DB |
| 67 | dbfilename dump.rdb |
| 68 | |
| 69 | # For default save/load DB in/from the working directory |
| 70 | # Note that you must specify a directory not a file name. |
| 71 | dir ./ |
| 72 | |
| 73 | ################################# REPLICATION ################################# |
| 74 | |
| 75 | # Master-Slave replication. Use slaveof to make a Redis instance a copy of |
| 76 | # another Redis server. Note that the configuration is local to the slave |
| 77 | # so for example it is possible to configure the slave to save the DB with a |
| 78 | # different interval, or to listen to another port, and so on. |
| 79 | # |
| 80 | # slaveof <masterip> <masterport> |
| 81 | |
| 82 | # If the master is password protected (using the "requirepass" configuration |
| 83 | # directive below) it is possible to tell the slave to authenticate before |
| 84 | # starting the replication synchronization process, otherwise the master will |
| 85 | # refuse the slave request. |
| 86 | # |
| 87 | # masterauth <master-password> |
| 88 | |
| 89 | ################################## SECURITY ################################### |
| 90 | |
| 91 | # Require clients to issue AUTH <PASSWORD> before processing any other |
| 92 | # commands. This might be useful in environments in which you do not trust |
| 93 | # others with access to the host running redis-server. |
| 94 | # |
| 95 | # This should stay commented out for backward compatibility and because most |
| 96 | # people do not need auth (e.g. they run their own servers). |
| 97 | # |
| 98 | # requirepass foobared |
| 99 | |
| 100 | ################################### LIMITS #################################### |
| 101 | |
| 102 | # Set the max number of connected clients at the same time. By default there |
| 103 | # is no limit, and it's up to the number of file descriptors the Redis process |
| 104 | # is able to open. The special value '0' means no limits. |
| 105 | # Once the limit is reached Redis will close all the new connections sending |
| 106 | # an error 'max number of clients reached'. |
| 107 | # |
| 108 | # maxclients 128 |
| 109 | |
| 110 | # Don't use more memory than the specified amount of bytes. |
| 111 | # When the memory limit is reached Redis will try to remove keys with an |
| 112 | # EXPIRE set. It will try to start freeing keys that are going to expire |
| 113 | # in little time and preserve keys with a longer time to live. |
| 114 | # Redis will also try to remove objects from free lists if possible. |
| 115 | # |
| 116 | # If all this fails, Redis will start to reply with errors to commands |
| 117 | # that will use more memory, like SET, LPUSH, and so on, and will continue |
| 118 | # to reply to most read-only commands like GET. |
| 119 | # |
| 120 | # WARNING: maxmemory can be a good idea mainly if you want to use Redis as a |
| 121 | # 'state' server or cache, not as a real DB. When Redis is used as a real |
| 122 | # database the memory usage will grow over the weeks, it will be obvious if |
| 123 | # it is going to use too much memory in the long run, and you'll have the time |
| 124 | # to upgrade. With maxmemory after the limit is reached you'll start to get |
| 125 | # errors for write operations, and this may even lead to DB inconsistency. |
| 126 | # |
| 127 | # maxmemory <bytes> |
| 128 | |
| 129 | ############################## APPEND ONLY MODE ############################### |
| 130 | |
| 131 | # By default Redis asynchronously dumps the dataset on disk. If you can live |
| 132 | # with the idea that the latest records will be lost if something like a crash |
| 133 | # happens this is the preferred way to run Redis. If instead you care a lot |
| 134 | # about your data and don't want to that a single record can get lost you should |
| 135 | # enable the append only mode: when this mode is enabled Redis will append |
| 136 | # every write operation received in the file appendonly.log. This file will |
| 137 | # be read on startup in order to rebuild the full dataset in memory. |
| 138 | # |
| 139 | # Note that you can have both the async dumps and the append only file if you |
| 140 | # like (you have to comment the "save" statements above to disable the dumps). |
| 141 | # Still if append only mode is enabled Redis will load the data from the |
| 142 | # log file at startup ignoring the dump.rdb file. |
| 143 | # |
| 144 | # The name of the append only file is "appendonly.log" |
| 145 | # |
| 146 | # IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append |
| 147 | # log file in background when it gets too big. |
| 148 | |
| 149 | appendonly no |
| 150 | |
| 151 | # The fsync() call tells the Operating System to actually write data on disk |
| 152 | # instead to wait for more data in the output buffer. Some OS will really flush |
| 153 | # data on disk, some other OS will just try to do it ASAP. |
| 154 | # |
| 155 | # Redis supports three different modes: |
| 156 | # |
| 157 | # no: don't fsync, just let the OS flush the data when it wants. Faster. |
| 158 | # always: fsync after every write to the append only log . Slow, Safest. |
| 159 | # everysec: fsync only if one second passed since the last fsync. Compromise. |
| 160 | # |
| 161 | # The default is "everysec" that's usually the right compromise between |
| 162 | # speed and data safety. It's up to you to understand if you can relax this to |
| 163 | # "no" that will will let the operating system flush the output buffer when |
| 164 | # it wants, for better performances (but if you can live with the idea of |
| 165 | # some data loss consider the default persistence mode that's snapshotting), |
| 166 | # or on the contrary, use "always" that's very slow but a bit safer than |
| 167 | # everysec. |
| 168 | # |
| 169 | # If unsure, use "everysec". |
| 170 | |
| 171 | # appendfsync always |
| 172 | appendfsync everysec |
| 173 | # appendfsync no |
| 174 | |
| 175 | ################################ VIRTUAL MEMORY ############################### |
| 176 | |
| 177 | # Virtual Memory allows Redis to work with datasets bigger than the actual |
| 178 | # amount of RAM needed to hold the whole dataset in memory. |
| 179 | # In order to do so very used keys are taken in memory while the other keys |
| 180 | # are swapped into a swap file, similarly to what operating systems do |
| 181 | # with memory pages. |
| 182 | # |
| 183 | # To enable VM just set 'vm-enabled' to yes, and set the following three |
| 184 | # VM parameters accordingly to your needs. |
| 185 | |
| 186 | vm-enabled no |
| 187 | # vm-enabled yes |
| 188 | |
| 189 | # This is the path of the Redis swap file. As you can guess, swap files |
| 190 | # can't be shared by different Redis instances, so make sure to use a swap |
| 191 | # file for every redis process you are running. |
| 192 | # |
| 193 | # The swap file name may contain "%p" that is substituted with the PID of |
| 194 | # the Redis process, so the default name /tmp/redis-%p.vm will work even |
| 195 | # with multiple instances as Redis will use, for example, redis-811.vm |
| 196 | # for one instance and redis-593.vm for another one. |
| 197 | # |
| 198 | # Useless to say, the best kind of disk for a Redis swap file (that's accessed |
| 199 | # at random) is a Solid State Disk (SSD). |
| 200 | # |
| 201 | # *** WARNING *** if you are using a shared hosting the default of putting |
| 202 | # the swap file under /tmp is not secure. Create a dir with access granted |
| 203 | # only to Redis user and configure Redis to create the swap file there. |
| 204 | vm-swap-file /tmp/redis-%p.vm |
| 205 | |
| 206 | # vm-max-memory configures the VM to use at max the specified amount of |
| 207 | # RAM. Everything that deos not fit will be swapped on disk *if* possible, that |
| 208 | # is, if there is still enough contiguous space in the swap file. |
| 209 | # |
| 210 | # With vm-max-memory 0 the system will swap everything it can. Not a good |
| 211 | # default, just specify the max amount of RAM you can in bytes, but it's |
| 212 | # better to leave some margin. For instance specify an amount of RAM |
| 213 | # that's more or less between 60 and 80% of your free RAM. |
| 214 | vm-max-memory 0 |
| 215 | |
| 216 | # Redis swap files is split into pages. An object can be saved using multiple |
| 217 | # contiguous pages, but pages can't be shared between different objects. |
| 218 | # So if your page is too big, small objects swapped out on disk will waste |
| 219 | # a lot of space. If you page is too small, there is less space in the swap |
| 220 | # file (assuming you configured the same number of total swap file pages). |
| 221 | # |
| 222 | # If you use a lot of small objects, use a page size of 64 or 32 bytes. |
| 223 | # If you use a lot of big objects, use a bigger page size. |
| 224 | # If unsure, use the default :) |
| 225 | vm-page-size 32 |
| 226 | |
| 227 | # Number of total memory pages in the swap file. |
| 228 | # Given that the page table (a bitmap of free/used pages) is taken in memory, |
| 229 | # every 8 pages on disk will consume 1 byte of RAM. |
| 230 | # |
| 231 | # The total swap size is vm-page-size * vm-pages |
| 232 | # |
| 233 | # With the default of 32-bytes memory pages and 134217728 pages Redis will |
| 234 | # use a 4 GB swap file, that will use 16 MB of RAM for the page table. |
| 235 | # |
| 236 | # It's better to use the smallest acceptable value for your application, |
| 237 | # but the default is large in order to work in most conditions. |
| 238 | vm-pages 134217728 |
| 239 | |
| 240 | # Max number of VM I/O threads running at the same time. |
| 241 | # This threads are used to read/write data from/to swap file, since they |
| 242 | # also encode and decode objects from disk to memory or the reverse, a bigger |
| 243 | # number of threads can help with big objects even if they can't help with |
| 244 | # I/O itself as the physical device may not be able to couple with many |
| 245 | # reads/writes operations at the same time. |
| 246 | # |
| 247 | # The special value of 0 turn off threaded I/O and enables the blocking |
| 248 | # Virtual Memory implementation. |
| 249 | vm-max-threads 4 |
| 250 | |
| 251 | ############################### ADVANCED CONFIG ############################### |
| 252 | |
| 253 | # Glue small output buffers together in order to send small replies in a |
| 254 | # single TCP packet. Uses a bit more CPU but most of the times it is a win |
| 255 | # in terms of number of queries per second. Use 'yes' if unsure. |
| 256 | glueoutputbuf yes |
| 257 | |
| 258 | # Use object sharing. Can save a lot of memory if you have many common |
| 259 | # string in your dataset, but performs lookups against the shared objects |
| 260 | # pool so it uses more CPU and can be a bit slower. Usually it's a good |
| 261 | # idea. |
| 262 | # |
| 263 | # When object sharing is enabled (shareobjects yes) you can use |
| 264 | # shareobjectspoolsize to control the size of the pool used in order to try |
| 265 | # object sharing. A bigger pool size will lead to better sharing capabilities. |
| 266 | # In general you want this value to be at least the double of the number of |
| 267 | # very common strings you have in your dataset. |
| 268 | # |
| 269 | # WARNING: object sharing is experimental, don't enable this feature |
| 270 | # in production before of Redis 1.0-stable. Still please try this feature in |
| 271 | # your development environment so that we can test it better. |
| 272 | shareobjects no |
| 273 | shareobjectspoolsize 1024 |
| 274 | |
| 275 | # Hashes are encoded in a special way (much more memory efficient) when they |
| 276 | # have at max a given numer of elements, and the biggest element does not |
| 277 | # exceed a given threshold. You can configure this limits with the following |
| 278 | # configuration directives. |
| 279 | hash-max-zipmap-entries 64 |
| 280 | hash-max-zipmap-value 512 |
| 281 | |
| 282 | ################################## INCLUDES ################################### |
| 283 | |
| 284 | # Include one or more other config files here. This is useful if you |
| 285 | # have a standard template that goes to all redis server but also need |
| 286 | # to customize a few per-server settings. Include files can include |
| 287 | # other files, so use this wisely. |
| 288 | # |
| 289 | # include /path/to/local.conf |
| 290 | # include /path/to/other.conf |