redis設定檔redis.conf的參數說明

來源:互聯網
上載者:User

標籤:

開啟redis.conf檔案:# By default Redis does not run as a daemon. Use ‘yes‘ if you need it.# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.#Redis預設不是以守護進程的方式運行,可以通過該配置項修改,使用yes啟用守護進程 daemonize no # When running daemonized, Redis writes a pid file in /var/run/redis.pid by# default. You can specify a custom pid file location here.#當 Redis 以守護進程的方式啟動並執行時候,Redis 預設會把 pid 檔案放在/var/run/redis.pid#可配置到其他地址,當運行多個 redis 服務時,需要指定不同的 pid 檔案和連接埠 pidfile /var/run/redis.pid # Accept connections on the specified port, default is 6379.# If port 0 is specified Redis will not listen on a TCP socket.#連接埠 port 6379 # If you want you can bind a single interface, if the bind option is not# specified all the interfaces will listen for incoming connections.#指定Redis可接收請求的IP地址,不設定將處理所有請求,建議生產環境中設定 # bind 127.0.0.1 # Close the connection after a client is idle for N seconds (0 to disable)#用戶端串連的逾時時間,單位為秒,逾時後會關閉串連 timeout 0 # Set server verbosity to ‘debug‘# it can be one of:# debug (a lot of information, useful for development/testing)# verbose (many rarely useful info, but not a mess like the debug level)# notice (moderately verbose, what you want in production probably)# warning (only very important / critical messages are logged)#日誌記錄等級,4個可選值 loglevel notice # Specify the log file name. Also ‘stdout‘ can be used to force# Redis to log on the standard output. Note that if you use standard# output for logging but daemonize, logs will be sent to /dev/null#配置 log 檔案地址,預設列印在命令列終端的視窗上,也可設為/dev/null屏蔽日誌、 logfile stdout # Set the number of databases. The default database is DB 0, you can select# a different one on a per-connection basis using SELECT where# dbid is a number between 0 and ‘databases‘-1#設定資料庫的個數,可以使用 SELECT 命令來切換資料庫。 databases 16 ## Save the DB on disk:##   save##   Will save the DB if both the given number of seconds and the given#   number of write operations against the DB occurred.##   In the example below the behaviour will be to save:#   after 900 sec (15 min) if at least 1 key changed#   after 300 sec (5 min) if at least 10 keys changed#   after 60 sec if at least 10000 keys changed##   Note: you can disable saving at all commenting all the "save" lines.#設定 Redis 進行資料庫鏡像的頻率。儲存資料到disk的策略#900秒之內有1個keys發生變化時#30秒之內有10個keys發生變化時#60秒之內有10000個keys發生變化時 save 900 1 save 300 10 save 60 10000 # Compress string objects using LZF when dump .rdb databases?# For default that‘s set to ‘yes‘ as it‘s almost always a win.# If you want to save some CPU in the saving child set it to ‘no‘ but# the dataset will likely be bigger if you have compressible values or keys.#在進行鏡像備份時,是否進行壓縮 rdbcompression yes # The filename where to dump the DB#鏡像備份檔案的檔案名稱 dbfilename dump.rdb # The working directory.## The DB will be written inside this directory, with the filename specified# above using the ‘dbfilename‘ configuration directive.# # Also the Append Only File will be created inside this directory.# # Note that you must specify a directory here, not a file name.#資料庫鏡像備份的檔案放置的路徑#路徑跟檔案名稱分開配置是因為 Redis 備份時,先會將當前資料庫的狀態寫入到一個臨時檔案#等備份完成時,再把該臨時檔案替換為上面所指定的檔案#而臨時檔案和上面所配置的備份檔案都會放在這個指定的路徑當中#預設值為 ./ dir /var/lib/redis/ # Master-Slave replication. Use slaveof to make a Redis instance a copy of# another Redis server. Note that the configuration is local to the slave# so for example it is possible to configure the slave to save the DB with a# different interval, or to listen to another port, and so on.#設定該資料庫為其他資料庫的從資料庫#slaveof <masterip> <masterport> 當本機為從服務時,設定主服務的IP及連接埠 # slaveof # If the master is password protected (using the "requirepass" configuration# directive below) it is possible to tell the slave to authenticate before# starting the replication synchronization process, otherwise the master will# refuse the slave request.#指定與主要資料庫串連時需要的密碼驗證#masterauth <master-password> 當本機為從服務時,設定主服務的串連密碼 # masterauth # When a slave lost the connection with the master, or when the replication# is still in progress, the slave can act in two different ways:## 1) if slave-serve-stale-data is set to ‘yes‘ (the default) the slave will#    still reply to client requests, possibly with out of data data, or the#    data set may just be empty if this is the first synchronization.## 2) if slave-serve-stale data is set to ‘no‘ the slave will reply with#    an error "SYNC with master in progress" to all the kind of commands#    but to INFO and SLAVEOF.#當slave丟失與master的串連時,或slave仍然在於master進行資料同步時(未與master保持一致)#slave可有兩種方式來響應用戶端請求:#1)如果 slave-serve-stale-data 設定成 ‘yes‘(預設),slave仍會響應用戶端請求,此時可能會有問題#2)如果 slave-serve-stale-data 設定成 ‘no‘,slave會返回"SYNC with master in progress"錯誤資訊,但 INFO 和SLAVEOF命令除外。slave-serve-stale-data yes # Require clients to issue AUTH before processing any other# commands.  This might be useful in environments in which you do not trust# others with access to the host running redis-server.## This should stay commented out for backward compatibility and because most# people do not need auth (e.g. they run their own servers).# # Warning: since Redis is pretty fast an outside user can try up to# 150k passwords per second against a good box. This means that you should# use a very strong password otherwise it will be very easy to break.#設定用戶端串連後進行任何其他指定前需要使用的密碼#redis速度相當快,一個外部使用者在一秒鐘進行150K次密碼嘗試,需指定強大的密碼來防止暴力破解 # requirepass foobared # Set the max number of connected clients at the same time. By default there# is no limit, and it‘s up to the number of file descriptors the Redis process# is able to open. The special value ‘0‘ means no limits.# Once the limit is reached Redis will close all the new connections sending# an error ‘max number of clients reached‘.#限制同時串連的客戶數量。#當串連數超過這個值時,redis 將不再接收其他串連請求,用戶端嘗試串連時將收到 error 資訊 # maxclients 128 # Don‘t use more memory than the specified amount of bytes.# When the memory limit is reached Redis will try to remove keys# accordingly to the eviction policy selected (see maxmemmory-policy).## If Redis can‘t remove keys according to the policy, or if the policy is# set to ‘noeviction‘, Redis will start to reply with errors to commands# that would use more memory, like SET, LPUSH, and so on, and will continue# to reply to read-only commands like GET.## This option is usually useful when using Redis as an LRU cache, or to set# an hard memory limit for an instance (using the ‘noeviction‘ policy).## WARNING: If you have slaves attached to an instance with maxmemory on,# the size of the output buffers needed to feed the slaves are subtracted# from the used memory count, so that network problems / resyncs will# not trigger a loop where keys are evicted, and in turn the output# buffer of slaves is full with DELs of keys evicted triggering the deletion# of more keys, and so forth until the database is completely emptied.## In short... if you have slaves attached it is suggested that you set a lower# limit for maxmemory so that there is some free RAM on the system for slave# output buffers (but this is not needed if the policy is ‘noeviction‘).#設定redis能夠使用的最大記憶體。#達到最大記憶體設定後,Redis會先嘗試清除已到期或即將到期的Key(設定過expire資訊的key)#在刪除時,按照到期時間進行刪除,最早將要被到期的key將最先被刪除#如果已到期或即將到期的key刪光,仍進行set操作,那麼將返回錯誤#此時redis將不再接收寫請求,只接收get請求。#maxmemory的設定比較適合於把redis當作於類似memcached 的緩衝來使用 # maxmemory <bytes> # By default Redis asynchronously dumps the dataset on disk. If you can live# with the idea that the latest records will be lost if something like a crash# happens this is the preferred way to run Redis. If instead you care a lot# about your data and don‘t want to that a single record can get lost you should# enable the append only mode: when this mode is enabled Redis will append# every write operation received in the file appendonly.aof. This file will# be read on startup in order to rebuild the full dataset in memory.## Note that you can have both the async dumps and the append only file if you# like (you have to comment the "save" statements above to disable the dumps).# Still if append only mode is enabled Redis will load the data from the# log file at startup ignoring the dump.rdb file.## IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append# log file in background when it gets too big.#redis 預設每次更新操作後會在後台非同步把資料庫鏡像備份到磁碟,但該備份非常耗時,且備份不宜太頻繁#redis 同步資料檔案是按上面save條件來同步的#如果發生諸如拉閘限電、拔插頭等狀況,那麼將造成比較大範圍的資料丟失#所以redis提供了另外一種更加高效的Database Backup及災難恢複方式#開啟append only 模式後,redis 將每一次寫操作請求都追加到appendonly.aof 檔案中#redis重新啟動時,會從該檔案恢複出之前的狀態。#但可能會造成 appendonly.aof 檔案過大,所以redis支援BGREWRITEAOF 指令,對appendonly.aof重新整理 appendonly no # The name of the append only file (default: "appendonly.aof")##更新記錄檔名,預設值為appendonly.aof # appendfilename appendonly.aof # The fsync() call tells the Operating System to actually write data on disk# instead to wait for more data in the output buffer. Some OS will really flush # data on disk, some other OS will just try to do it ASAP.## Redis supports three different modes:## no: don‘t fsync, just let the OS flush the data when it wants. Faster.# always: fsync after every write to the append only log . Slow, Safest.# everysec: fsync only if one second passed since the last fsync. Compromise.## The default is "everysec" that‘s usually the right compromise between# speed and data safety. It‘s up to you to understand if you can relax this to# "no" that will will let the operating system flush the output buffer when# it wants, for better performances (but if you can live with the idea of# some data loss consider the default persistence mode that‘s snapshotting),# or on the contrary, use "always" that‘s very slow but a bit safer than# everysec.## If unsure, use "everysec".#設定對 appendonly.aof 檔案進行同步的頻率#always 表示每次有寫操作都進行同步,everysec 表示對寫操作進行累積,每秒同步一次。#no表示等作業系統進行資料緩衝同步到磁碟,都進行同步,everysec 表示對寫操作進行累積,每秒同步一次 # appendfsync always appendfsync everysec # appendfsync no # Virtual Memory allows Redis to work with datasets bigger than the actual# amount of RAM needed to hold the whole dataset in memory.# In order to do so very used keys are taken in memory while the other keys# are swapped into a swap file, similarly to what operating systems do# with memory pages.## To enable VM just set ‘vm-enabled‘ to yes, and set the following three# VM parameters accordingly to your needs.#是否開啟虛擬記憶體支援。#redis 是一個記憶體資料庫,當記憶體滿時,無法接收新的寫請求,所以在redis2.0後,提供了虛擬記憶體的支援#但需要注意的,redis 所有的key都會放在記憶體中,在記憶體不夠時,只把value 值放入交換區#雖使用虛擬記憶體,但效能基本不受影響,需要注意的是要把vm-max-memory設定到足夠來放下所有的key vm-enabled no # vm-enabled yes # This is the path of the Redis swap file. As you can guess, swap files# can‘t be shared by different Redis instances, so make sure to use a swap# file for every redis process you are running. Redis will complain if the# swap file is already in use.## The best kind of storage for the Redis swap file (that‘s accessed at random) # is a Solid State Disk (SSD).## *** WARNING *** if you are using a shared hosting the default of putting# the swap file under /tmp is not secure. Create a dir with access granted# only to Redis user and configure Redis to create the swap file there.#設定虛擬記憶體的分頁檔路徑,不可多個Redis執行個體共用 vm-swap-file /tmp/redis.swap # vm-max-memory configures the VM to use at max the specified amount of# RAM. Everything that deos not fit will be swapped on disk *if* possible, that# is, if there is still enough contiguous space in the swap file.## With vm-max-memory 0 the system will swap everything it can. Not a good# default, just specify the max amount of RAM you can in bytes, but it‘s# better to leave some margin. For instance specify an amount of RAM# that‘s more or less between 60 and 80% of your free RAM.#設定開啟虛擬記憶體後,redis將使用的最大實體記憶體大小。#預設為0,redis將把他所有能放到分頁檔的都放到分頁檔中,以盡量少的使用實體記憶體#即當vm-max-memory設定為0的時候,其實是所有value都存在於磁碟#在生產環境下,需要根據實際情況設定該值,最好不要使用預設的 0 vm-max-memory 0 # Redis swap files is split into pages. An object can be saved using multiple# contiguous pages, but pages can‘t be shared between different objects.# So if your page is too big, small objects swapped out on disk will waste# a lot of space. If you page is too small, there is less space in the swap# file (assuming you configured the same number of total swap file pages).## If you use a lot of small objects, use a page size of 64 or 32 bytes.# If you use a lot of big objects, use a bigger page size.# If unsure, use the default :)#設定虛擬記憶體的頁大小如果 value 值比較大,如要在 value 中放置部落格、新聞之類的所有文章內容,就設大一點 vm-page-size 32 # Number of total memory pages in the swap file.# Given that the page table (a bitmap of free/used pages) is taken in memory,# every 8 pages on disk will consume 1 byte of RAM.## The total swap size is vm-page-size * vm-pages## With the default of 32-bytes memory pages and 134217728 pages Redis will# use a 4 GB swap file, that will use 16 MB of RAM for the page table.## It‘s better to use the smallest acceptable value for your application,# but the default is large in order to work in most conditions.#設定分頁檔的總的 page 數量#注意page table資訊是放在實體記憶體中,每8個page 就會佔據RAM中的 1 個 byte#總的虛擬記憶體大小 = vm-page-size * vm-pages vm-pages 134217728 # Max number of VM I/O threads running at the same time.# This threads are used to read/write data from/to swap file, since they# also encode and decode objects from disk to memory or the reverse, a bigger# number of threads can help with big objects even if they can‘t help with# I/O itself as the physical device may not be able to couple with many# reads/writes operations at the same time.## The special value of 0 turn off threaded I/O and enables the blocking# Virtual Memory implementation.#設定 VM IO 同時使用的線程數量。 vm-max-threads 4 # Hashes are encoded in a special way (much more memory efficient) when they# have at max a given numer of elements, and the biggest element does not# exceed a given threshold. You can configure this limits with the following# configuration directives.#redis 2.0後引入了 hash 資料結構。 #hash 中包含超過指定元素個數並且最大的元素當沒有超過臨界時,hash 將以zipmap來儲存#zipmap又稱為 small hash,可大大減少記憶體的使用 hash-max-zipmap-entries 512 hash-max-zipmap-value 64 # Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in# order to help rehashing the main Redis hash table (the one mapping top-level# keys to values). The hash table implementation redis uses (see dict.c)# performs a lazy rehashing: the more operation you run into an hash table# that is rhashing, the more rehashing "steps" are performed, so if the# server is idle the rehashing is never complete and some more memory is used# by the hash table.# # The default is to use this millisecond 10 times every second in order to# active rehashing the main dictionaries, freeing memory when possible.## If unsure:# use "activerehashing no" if you have hard latency requirements and it is# not a good thing in your environment that Redis can reply form time to time# to queries with 2 milliseconds delay.## use "activerehashing yes" if you don‘t have such hard requirements but# want to free memory asap when possible.#是否重設Hash表#設定成yes後redis將每100毫秒使用1毫秒CPU時間來對redis的hash表重新hash,可降低記憶體的使用#當使用情境有較為嚴格的即時性需求,不能接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置為no。#如果沒有這麼嚴格的即時性要求,可以設定為 yes,以便能夠儘可能快的釋放記憶體 activerehashing yes   Redis官方文檔對VM的使用提出了一些建議:
  • 當key很小而value很大時,使用VM的效果會比較好.因為這樣節約的記憶體比較大
  • 當key不小時,可以考慮使用一些非常方法將很大的key變成很大的value,如可將key,value組合成一個新的value
  • 最好使用linux ext3 等對疏鬆檔案支援比較好的檔案系統儲存你的swap檔案
  • vm-max-threads參數可設定訪問swap檔案的線程數,最好不要超過機器的核心數;設定為0則所有對swap檔案的操作都是串列的,可能會造成比較長時間的延遲,但是對資料完整性有很好的保證
redis資料存放區redis的儲存分為記憶體儲存、磁碟儲存和log檔案三部分,設定檔中有三個參數對其進行配置。
  • save seconds updates,save配置,指出在多長時間內,有多少次更新操作,就將資料同步到資料檔案。可多個條件配合,預設配置了三個條件。
  • appendonly yes/no ,appendonly配置,指出是否在每次更新操作後進行日誌記錄,如果不開啟,可能會在斷電時導致一段時間內的資料丟失。因為redis本身同步資料檔案是按上面的save條件來同步的,所以有的資料會在一段時間內只存在於記憶體中。
  • appendfsync no/always/everysec ,appendfsync配置,no表示等作業系統進行資料緩衝同步到磁碟,always表示每次更新操作後手動調用fsync()將資料寫到磁碟,everysec表示每秒同步一次。

redis設定檔redis.conf的參數說明

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.