转自: Reids配置文件redis.conf中文详解

redis的各种配置都是在redis.conf文件中进行配置的.

有关其每项配置的中文详细解释如下:

对应的中文版解释redis.conf

  1. # Redis 配置文件示例
  2.  
  3. # 注意单位: 当需要配置内存大小时, 可能需要指定像1k,5GB,4M等常见格式
  4. #
  5. # 1k => 1000 bytes
  6. # 1kb => 1024 bytes
  7. # 1m => 1000000 bytes
  8. # 1mb => 1024*1024 bytes
  9. # 1g => 1000000000 bytes
  10. # 1gb => 1024*1024*1024 bytes
  11. #
  12. # 单位是对大小写不敏感的 1GB 1Gb 1gB 是相同的。
  13.  
  14. ################################## INCLUDES ###################################
  15.  
  16. # 可以在这里包含一个或多个其他的配置文件。如果你有一个适用于所有Redis服务器的标准配置模板
  17. # 但也需要一些每个服务器自定义的设置,这个功能将很有用。被包含的配置文件也可以包含其他配置文件,
  18. # 所以需要谨慎的使用这个功能。
  19. #
  20. # 注意“inclue”选项不能被admin或Redis哨兵的"CONFIG REWRITE"命令重写。
  21. # 因为Redis总是使用最后解析的配置行最为配置指令的值, 你最好在这个文件的开头配置includes来
  22. # 避免它在运行时重写配置。
  23. # 如果相反你想用includes的配置覆盖原来的配置,你最好在该文件的最后使用include
  24. #
  25. # include /path/to/local.conf
  26. # include /path/to/other.conf
  27.  
  28. ################################ GENERAL #####################################
  29.  
  30. # 默认Rdis不会作为守护进程运行。如果需要的话配置成'yes'
  31. # 注意配置成守护进程后Redis会将进程号写入文件/var/run/redis.pid
  32. daemonize no
  33.  
  34. # 当以守护进程方式运行时,默认Redis会把进程ID写到 /var/run/redis.pid。你可以在这里修改路径。
  35. pidfile /var/run/redis.pid
  36.  
  37. # 接受连接的特定端口,默认是6379
  38. # 如果端口设置为0,Redis就不会监听TCP套接字。
  39. port 6379
  40.  
  41. # TCP listen() backlog.
  42. #
  43. # 在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。注意Linux内核默默地将这个值减小
  44. # 到/proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_max_syn_backlog
  45. # 两个值来达到想要的效果。
  46. tcp-backlog 511
  47.  
  48. # 默认Redis监听服务器上所有可用网络接口的连接。可以用"bind"配置指令跟一个或多个ip地址来实现
  49. # 监听一个或多个网络接口
  50. #
  51. # 示例:
  52. #
  53. # bind 192.168.1.100 10.0.0.1
  54. # bind 127.0.0.1
  55.  
  56. # 指定用来监听Unix套套接字的路径。没有默认值, 所以在没有指定的情况下Redis不会监听Unix套接字
  57. #
  58. # unixsocket /tmp/redis.sock
  59. # unixsocketperm 755
  60.  
  61. # 一个客户端空闲多少秒后关闭连接。(0代表禁用,永不关闭)
  62. timeout 0
  63.  
  64. # TCP keepalive.
  65. #
  66. # 如果非零,则设置SO_KEEPALIVE选项来向空闲连接的客户端发送ACK,由于以下两个原因这是很有用的:
  67. #
  68. # 1)能够检测无响应的对端
  69. # 2)让该连接中间的网络设备知道这个连接还存活
  70. #
  71. # 在Linux上,这个指定的值(单位:秒)就是发送ACK的时间间隔。
  72. # 注意:要关闭这个连接需要两倍的这个时间值。
  73. # 在其他内核上这个时间间隔由内核配置决定
  74. #
  75. # 这个选项的一个合理值是60秒
  76. tcp-keepalive 0
  77.  
  78. # 指定服务器调试等级
  79. # 可能值:
  80. # debug (大量信息,对开发/测试有用)
  81. # verbose (很多精简的有用信息,但是不像debug等级那么多)
  82. # notice (适量的信息,基本上是你生产环境中需要的)
  83. # warning (只有很重要/严重的信息会记录下来)
  84. loglevel notice
  85.  
  86. # 指明日志文件名。也可以使用"stdout"来强制让Redis把日志信息写到标准输出上。
  87. # 注意:如果Redis以守护进程方式运行,而设置日志显示到标准输出的话,日志会发送到/dev/null
  88. logfile ""
  89.  
  90. # 要使用系统日志记录器,只要设置 "syslog-enabled" 为 "yes" 就可以了。
  91. # 然后根据需要设置其他一些syslog参数就可以了。
  92. # syslog-enabled no
  93.  
  94. # 指明syslog身份
  95. # syslog-ident redis
  96.  
  97. # 指明syslog的设备。必须是user或LOCAL0 ~ LOCAL7之一。
  98. # syslog-facility local0
  99.  
  100. # 设置数据库个数。默认数据库是 DB 0,
  101. # 可以通过select <dbid> (0 <= dbid <= 'databases' - 1 )来为每个连接使用不同的数据库。
  102. databases 16
  103.  
  104. ################################ SNAPSHOTTING ################################
  105. #
  106. # 把数据库存到磁盘上:
  107. #
  108. # save <seconds> <changes>
  109. #
  110. # 会在指定秒数和数据变化次数之后把数据库写到磁盘上。
  111. #
  112. # 下面的例子将会进行把数据写入磁盘的操作:
  113. # 900秒(15分钟)之后,且至少1次变更
  114. # 300秒(5分钟)之后,且至少10次变更
  115. # 60秒之后,且至少10000次变更
  116. #
  117. # 注意:你要想不写磁盘的话就把所有 "save" 设置注释掉就行了。
  118. #
  119. # 通过添加一条带空字符串参数的save指令也能移除之前所有配置的save指令
  120. # 像下面的例子:
  121. # save ""
  122.  
  123. save 900 1
  124. save 300 10
  125. save 60 10000
  126.  
  127. # 默认如果开启RDB快照(至少一条save指令)并且最新的后台保存失败,Redis将会停止接受写操作
  128. # 这将使用户知道数据没有正确的持久化到硬盘,否则可能没人注意到并且造成一些灾难。
  129. #
  130. # 如果后台保存进程能重新开始工作,Redis将自动允许写操作
  131. #
  132. # 然而如果你已经部署了适当的Redis服务器和持久化的监控,你可能想关掉这个功能以便于即使是
  133. # 硬盘,权限等出问题了Redis也能够像平时一样正常工作,
  134. stop-writes-on-bgsave-error yes
  135.  
  136. # 当导出到 .rdb 数据库时是否用LZF压缩字符串对象?
  137. # 默认设置为 "yes",因为几乎在任何情况下它都是不错的。
  138. # 如果你想节省CPU的话你可以把这个设置为 "no",但是如果你有可压缩的key和value的话,
  139. # 那数据文件就会更大了。
  140. rdbcompression yes
  141.  
  142. # 因为版本5的RDB有一个CRC64算法的校验和放在了文件的最后。这将使文件格式更加可靠但在
  143. # 生产和加载RDB文件时,这有一个性能消耗(大约10%),所以你可以关掉它来获取最好的性能。
  144. #
  145. # 生成的关闭校验的RDB文件有一个0的校验和,它将告诉加载代码跳过检查
  146. rdbchecksum yes
  147.  
  148. # 持久化数据库的文件名
  149. dbfilename dump.rdb
  150.  
  151. # 工作目录
  152. #
  153. # 数据库会写到这个目录下,文件名就是上面的 "dbfilename" 的值。
  154. #
  155. # 累加文件也放这里。
  156. #
  157. # 注意你这里指定的必须是目录,不是文件名。
  158. dir ./
  159.  
  160. ################################# REPLICATION #################################
  161. # 主从同步。通过 slaveof 指令来实现Redis实例的备份。
  162. # 注意,这里是本地从远端复制数据。也就是说,本地可以有不同的数据库文件、绑定不同的IP、监听
  163. # 不同的端口。
  164. #
  165. # slaveof <masterip> <masterport>
  166.  
  167. # 如果master设置了密码保护(通过 "requirepass" 选项来配置),那么slave在开始同步之前必须
  168. # 进行身份验证,否则它的同步请求会被拒绝。
  169. #
  170. # masterauth <master-password>
  171.  
  172. # 当一个slave失去和master的连接,或者同步正在进行中,slave的行为有两种可能:
  173. #
  174. # 1) 如果 slave-serve-stale-data 设置为 "yes" (默认值),slave会继续响应客户端请求,
  175. # 可能是正常数据,也可能是还没获得值的空数据。
  176. # 2) 如果 slave-serve-stale-data 设置为 "no",slave会回复"正在从master同步
  177. # (SYNC with master in progress)"来处理各种请求,除了 INFO 和 SLAVEOF 命令。
  178. #
  179. slave-serve-stale-data yes
  180.  
  181. # 你可以配置salve实例是否接受写操作。可写的slave实例可能对存储临时数据比较有用(因为写入salve
  182. # 的数据在同master同步之后将很容被删除),但是如果客户端由于配置错误在写入时也可能产生一些问题。
  183. #
  184. # 从Redis2.6默认所有的slave为只读
  185. #
  186. # 注意:只读的slave不是为了暴露给互联网上不可信的客户端而设计的。它只是一个防止实例误用的保护层。
  187. # 一个只读的slave支持所有的管理命令比如config,debug等。为了限制你可以用'rename-command'来
  188. # 隐藏所有的管理和危险命令来增强只读slave的安全性
  189. slave-read-only yes
  190.  
  191. # slave根据指定的时间间隔向master发送ping请求。
  192. # 时间间隔可以通过 repl_ping_slave_period 来设置。
  193. # 默认10秒。
  194. #
  195. # repl-ping-slave-period 10
  196.  
  197. # 以下选项设置同步的超时时间
  198. #
  199. # 1)slave在与master SYNC期间有大量数据传输,造成超时
  200. # 2)在slave角度,master超时,包括数据、ping等
  201. # 3)在master角度,slave超时,当master发送REPLCONF ACK pings
  202. #
  203. # 确保这个值大于指定的repl-ping-slave-period,否则在主从间流量不高时每次都会检测到超时
  204. #
  205. # repl-timeout 60
  206.  
  207. # 是否在slave套接字发送SYNC之后禁用 TCP_NODELAY ?
  208. #
  209. # 如果你选择“yes”Redis将使用更少的TCP包和带宽来向slaves发送数据。但是这将使数据传输到slave
  210. # 上有延迟,Linux内核的默认配置会达到40毫秒
  211. #
  212. # 如果你选择了 "no" 数据传输到salve的延迟将会减少但要使用更多的带宽
  213. #
  214. # 默认我们会为低延迟做优化,但高流量情况或主从之间的跳数过多时,把这个选项设置为“yes”
  215. # 是个不错的选择。
  216. repl-disable-tcp-nodelay no
  217.  
  218. # 设置数据备份的backlog大小。backlog是一个slave在一段时间内断开连接时记录salve数据的缓冲,
  219. # 所以一个slave在重新连接时,不必要全量的同步,而是一个增量同步就足够了,将在断开连接的这段
  220. # 时间内slave丢失的部分数据传送给它。
  221. #
  222. # 同步的backlog越大,slave能够进行增量同步并且允许断开连接的时间就越长。
  223. #
  224. # backlog只分配一次并且至少需要一个slave连接
  225. #
  226. # repl-backlog-size 1mb
  227.  
  228. # 当master在一段时间内不再与任何slave连接,backlog将会释放。以下选项配置了从最后一个
  229. # slave断开开始计时多少秒后,backlog缓冲将会释放。
  230. #
  231. # 0表示永不释放backlog
  232. #
  233. # repl-backlog-ttl 3600
  234.  
  235. # slave的优先级是一个整数展示在Redis的Info输出中。如果master不再正常工作了,哨兵将用它来
  236. # 选择一个slave提升=升为master。
  237. #
  238. # 优先级数字小的salve会优先考虑提升为master,所以例如有三个slave优先级分别为10,100,25,
  239. # 哨兵将挑选优先级最小数字为10的slave。
  240. #
  241. # 0作为一个特殊的优先级,标识这个slave不能作为master,所以一个优先级为0的slave永远不会被
  242. # 哨兵挑选提升为master
  243. #
  244. # 默认优先级为100
  245. slave-priority 100
  246.  
  247. # 如果master少于N个延时小于等于M秒的已连接slave,就可以停止接收写操作。
  248. #
  249. # N个slave需要是“oneline”状态
  250. #
  251. # 延时是以秒为单位,并且必须小于等于指定值,是从最后一个从slave接收到的ping(通常每秒发送)
  252. # 开始计数。
  253. #
  254. # This option does not GUARANTEES that N replicas will accept the write, but
  255. # will limit the window of exposure for lost writes in case not enough slaves
  256. # are available, to the specified number of seconds.
  257. #
  258. # 例如至少需要3个延时小于等于10秒的slave用下面的指令:
  259. #
  260. # min-slaves-to-write 3
  261. # min-slaves-max-lag 10
  262. #
  263. # 两者之一设置为0将禁用这个功能。
  264. #
  265. # 默认 min-slaves-to-write 值是0(该功能禁用)并且 min-slaves-max-lag 值是10。
  266.  
  267. ################################## SECURITY ###################################
  268.  
  269. # 要求客户端在处理任何命令时都要验证身份和密码。
  270. # 这个功能在有你不信任的其它客户端能够访问redis服务器的环境里非常有用。
  271. #
  272.  
  273. # 为了向后兼容的话这段应该注释掉。而且大多数人不需要身份验证(例如:它们运行在自己的服务器上)
  274. #
  275. # 警告:因为Redis太快了,所以外面的人可以尝试每秒150k的密码来试图破解密码。这意味着你需要
  276. # 一个高强度的密码,否则破解太容易了。
  277. #
  278. # requirepass foobared
  279.  
  280. # 命令重命名
  281. #
  282. # 在共享环境下,可以为危险命令改变名字。比如,你可以为 CONFIG 改个其他不太容易猜到的名字,
  283. # 这样内部的工具仍然可以使用,而普通的客户端将不行。
  284. #
  285. # 例如:
  286. #
  287. # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
  288. #
  289. # 也可以通过改名为空字符串来完全禁用一个命令
  290. #
  291. # rename-command CONFIG ""
  292. #
  293. # 请注意:改变命令名字被记录到AOF文件或被传送到从服务器可能产生问题。
  294.  
  295. ################################### LIMITS ####################################
  296.  
  297. # 设置最多同时连接的客户端数量。默认这个限制是10000个客户端,然而如果Redis服务器不能配置
  298. # 处理文件的限制数来满足指定的值,那么最大的客户端连接数就被设置成当前文件限制数减32(因
  299. # 为Redis服务器保留了一些文件描述符作为内部使用)
  300. #
  301. # 一旦达到这个限制,Redis会关闭所有新连接并发送错误'max number of clients reached'
  302. #
  303. # maxclients 10000
  304.  
  305. # 不要用比设置的上限更多的内存。一旦内存使用达到上限,Redis会根据选定的回收策略(参见:
  306. # maxmemmory-policy)删除key
  307. #
  308. # 如果因为删除策略Redis无法删除key,或者策略设置为 "noeviction",Redis会回复需要更
  309. # 多内存的错误信息给命令。例如,SET,LPUSH等等,但是会继续响应像Get这样的只读命令。
  310. #
  311. # 在使用Redis作为LRU缓存,或者为实例设置了硬性内存限制的时候(使用 "noeviction" 策略)
  312. # 的时候,这个选项通常事很有用的。
  313. #
  314. # 警告:当有多个slave连上达到内存上限的实例时,master为同步slave的输出缓冲区所需
  315. # 内存不计算在使用内存中。这样当驱逐key时,就不会因网络问题 / 重新同步事件触发驱逐key
  316. # 的循环,反过来slaves的输出缓冲区充满了key被驱逐的DEL命令,这将触发删除更多的key,
  317. # 直到这个数据库完全被清空为止
  318. #
  319. # 总之...如果你需要附加多个slave,建议你设置一个稍小maxmemory限制,这样系统就会有空闲
  320. # 的内存作为slave的输出缓存区(但是如果最大内存策略设置为"noeviction"的话就没必要了)
  321. #
  322. # maxmemory <bytes>
  323.  
  324. # 最大内存策略:如果达到内存限制了,Redis如何选择删除key。你可以在下面五个行为里选:
  325. #
  326. # volatile-lru -> 根据LRU算法生成的过期时间来删除。
  327. # allkeys-lru -> 根据LRU算法删除任何key。
  328. # volatile-random -> 根据过期设置来随机删除key。
  329. # allkeys->random -> 无差别随机删。
  330. # volatile-ttl -> 根据最近过期时间来删除(辅以TTL)
  331. # noeviction -> 谁也不删,直接在写操作时返回错误。
  332. #
  333. # 注意:对所有策略来说,如果Redis找不到合适的可以删除的key都会在写操作时返回一个错误。
  334. #
  335.  
  336. # 目前为止涉及的命令:set setnx setex append
  337. # incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
  338. # sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
  339. # zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
  340. # getset mset msetnx exec sort
  341. #
  342.  
  343. # 默认值如下:
  344. #
  345. # maxmemory-policy volatile-lru
  346.  
  347. # LRU和最小TTL算法的实现都不是很精确,但是很接近(为了省内存),所以你可以用样本量做检测。
  348. # 例如:默认Redis会检查3个key然后取最旧的那个,你可以通过下面的配置指令来设置样本的个数。
  349. #
  350. # maxmemory-samples 3
  351.  
  352. ############################## APPEND ONLY MODE ###############################
  353.  
  354. # 默认情况下,Redis是异步的把数据导出到磁盘上。这种模式在很多应用里已经足够好,但Redis进程
  355. # 出问题或断电时可能造成一段时间的写操作丢失(这取决于配置的save指令)。
  356. #
  357. # AOF是一种提供了更可靠的替代持久化模式,例如使用默认的数据写入文件策略(参见后面的配置)
  358. # 在遇到像服务器断电或单写情况下Redis自身进程出问题但操作系统仍正常运行等突发事件时,Redis
  359. # 能只丢失1秒的写操作。
  360. #
  361. # AOF和RDB持久化能同时启动并且不会有问题。
  362. # 如果AOF开启,那么在启动时Redis将加载AOF文件,它更能保证数据的可靠性。
  363. #
  364. # 请查看 http://redis.io/topics/persistence 来获取更多信息.
  365.  
  366. appendonly no
  367.  
  368. # 纯累加文件名字(默认:"appendonly.aof")
  369.  
  370. appendfilename "appendonly.aof"
  371.  
  372. # fsync() 系统调用告诉操作系统把数据写到磁盘上,而不是等更多的数据进入输出缓冲区。
  373. # 有些操作系统会真的把数据马上刷到磁盘上;有些则会尽快去尝试这么做。
  374. #
  375. # Redis支持三种不同的模式:
  376. #
  377. # no:不要立刻刷,只有在操作系统需要刷的时候再刷。比较快。
  378. # always:每次写操作都立刻写入到aof文件。慢,但是最安全。
  379. # everysec:每秒写一次。折中方案。
  380. #
  381. # 默认的 "everysec" 通常来说能在速度和数据安全性之间取得比较好的平衡。根据你的理解来
  382. # 决定,如果你能放宽该配置为"no" 来获取更好的性能(但如果你能忍受一些数据丢失,可以考虑使用
  383. # 默认的快照持久化模式),或者相反,用“always”会比较慢但比everysec要更安全。
  384. #
  385. # 请查看下面的文章来获取更多的细节
  386. # http://antirez.com/post/redis-persistence-demystified.html
  387. #
  388. # 如果不能确定,就用 "everysec"
  389.  
  390. # appendfsync always
  391. appendfsync everysec
  392. # appendfsync no
  393.  
  394. # 如果AOF的同步策略设置成 "always" 或者 "everysec",并且后台的存储进程(后台存储或写入AOF
  395. # 日志)会产生很多磁盘I/O开销。某些Linux的配置下会使Redis因为 fsync()系统调用而阻塞很久。
  396. # 注意,目前对这个情况还没有完美修正,甚至不同线程的 fsync() 会阻塞我们同步的write(2)调用。
  397. #
  398. # 为了缓解这个问题,可以用下面这个选项。它可以在 BGSAVE 或 BGREWRITEAOF 处理时阻止fsync()。
  399. #
  400. # 这就意味着如果有子进程在进行保存操作,那么Redis就处于"不可同步"的状态。
  401. # 这实际上是说,在最差的情况下可能会丢掉30秒钟的日志数据。(默认Linux设定)
  402. #
  403. # 如果把这个设置成"yes"带来了延迟问题,就保持"no",这是保存持久数据的最安全的方式。
  404.  
  405. no-appendfsync-on-rewrite no
  406.  
  407. # 自动重写AOF文件
  408. # 如果AOF日志文件增大到指定百分比,Redis能够通过 BGREWRITEAOF 自动重写AOF日志文件。
  409. #
  410. # 工作原理:Redis记住上次重写时AOF文件的大小(如果重启后还没有写操作,就直接用启动时的AOF大小)
  411. #
  412. # 这个基准大小和当前大小做比较。如果当前大小超过指定比例,就会触发重写操作。你还需要指定被重写
  413. # 日志的最小尺寸,这样避免了达到指定百分比但尺寸仍然很小的情况还要重写。
  414. #
  415. # 指定百分比为0会禁用AOF自动重写特性。
  416.  
  417. auto-aof-rewrite-percentage 100
  418. auto-aof-rewrite-min-size 64mb
  419.  
  420. ################################ LUA SCRIPTING ###############################
  421.  
  422. # Lua 脚本的最大执行时间,毫秒为单位
  423. #
  424. # 如果达到了最大的执行时间,Redis将要记录在达到最大允许时间之后一个脚本仍然在执行,并且将
  425. # 开始对查询进行错误响应。
  426. #
  427. # 当一个长时间运行的脚本超过了最大执行时间,只有 SCRIPT KILL 和 SHUTDOWN NOSAVE 两个
  428. # 命令可用。第一个可以用于停止一个还没有调用写命名的脚本。第二个是关闭服务器唯一方式,当
  429. # 写命令已经通过脚本开始执行,并且用户不想等到脚本的自然终止。
  430. #
  431. # 设置成0或者负值表示不限制执行时间并且没有任何警告
  432. lua-time-limit 5000
  433.  
  434. ################################## SLOW LOG ###################################
  435.  
  436. # Redis慢查询日志可以记录超过指定时间的查询。运行时间不包括各种I/O时间,例如:连接客户端,
  437. # 发送响应数据等,而只计算命令执行的实际时间(这只是线程阻塞而无法同时为其他请求服务的命令执
  438. # 行阶段)
  439. #
  440. # 你可以为慢查询日志配置两个参数:一个指明Redis的超时时间(单位为微秒)来记录超过这个时间的命令
  441. # 另一个是慢查询日志长度。当一个新的命令被写进日志的时候,最老的那个记录从队列中移除。
  442. #
  443. # 下面的时间单位是微秒,所以1000000就是1秒。注意,负数时间会禁用慢查询日志,而0则会强制记录
  444. # 所有命令。
  445. slowlog-log-slower-than 10000
  446.  
  447. # 这个长度没有限制。只是要主要会消耗内存。你可以通过 SLOWLOG RESET 来回收内存。
  448. slowlog-max-len 128
  449.  
  450. ############################# Event notification ##############################
  451.  
  452. # Redis 能通知 Pub/Sub 客户端关于键空间发生的事件
  453. # 这个功能文档位于http://redis.io/topics/keyspace-events
  454. #
  455. # 例如:如果键空间事件通知被开启,并且客户端对 0 号数据库的键 foo 执行 DEL 命令时,将通过
  456. # Pub/Sub发布两条消息:
  457. # PUBLISH __keyspace@0__:foo del
  458. # PUBLISH __keyevent@0__:del foo
  459. #
  460. # 可以在下表中选择Redis要通知的事件类型。事件类型由单个字符来标识:
  461. #
  462. # K 键空间通知,以__keyspace@<db>__为前缀
  463. # E 键事件通知,以__keysevent@<db>__为前缀
  464. # g DEL , EXPIRE , RENAME 等类型无关的通用命令的通知, ...
  465. # $ String命令
  466. # l List命令
  467. # s Set命令
  468. # h Hash命令
  469. # z 有序集合命令
  470. # x 过期事件(每次key过期时生成)
  471. # e 驱逐事件(当key在内存满了被清除时生成)
  472. # A g$lshzxe的别名,因此”AKE”意味着所有的事件
  473. #
  474. # notify-keyspace-events 带一个由0到多个字符组成的字符串参数。空字符串意思是通知被禁用。
  475. #
  476. # 例子:启用List和通用事件通知:
  477. # notify-keyspace-events Elg
  478. #
  479. # 例子2:为了获取过期key的通知订阅名字为 __keyevent@__:expired 的频道,用以下配置
  480. # notify-keyspace-events Ex
  481. #
  482. # 默认所用的通知被禁用,因为用户通常不需要该特性,并且该特性会有性能损耗。
  483. # 注意如果你不指定至少K或E之一,不会发送任何事件。
  484. notify-keyspace-events ""
  485.  
  486. ############################### ADVANCED CONFIG ###############################
  487.  
  488. # 当hash只有少量的entry时,并且最大的entry所占空间没有超过指定的限制时,会用一种节省内存的
  489. # 数据结构来编码。可以通过下面的指令来设定限制
  490. hash-max-ziplist-entries 512
  491. hash-max-ziplist-value 64
  492.  
  493. # 与hash似,数据元素较少的list,可以用另一种方式来编码从而节省大量空间。
  494. # 这种特殊的方式只有在符合下面限制时才可以用:
  495. list-max-ziplist-entries 512
  496. list-max-ziplist-value 64
  497.  
  498. # set有一种特殊编码的情况:当set数据全是十进制64位有符号整型数字构成的字符串时。
  499. # 下面这个配置项就是用来设置set使用这种编码来节省内存的最大长度。
  500. set-max-intset-entries 512
  501.  
  502. # 与hash和list相似,有序集合也可以用一种特别的编码方式来节省大量空间。
  503. # 这种编码只适合长度和元素都小于下面限制的有序集合:
  504. zset-max-ziplist-entries 128
  505. zset-max-ziplist-value 64
  506.  
  507. # HyperLogLog sparse representation bytes limit. The limit includes the
  508. # 16 bytes header. When an HyperLogLog using the sparse representation crosses
  509. # this limit, it is converted into the dense representation.
  510. #
  511. # A value greater than 16000 is totally useless, since at that point the
  512. # dense representation is more memory efficient.
  513. #
  514. # The suggested value is ~ 3000 in order to have the benefits of
  515. # the space efficient encoding without slowing down too much PFADD,
  516. # which is O(N) with the sparse encoding. The value can be raised to
  517. # ~ 10000 when CPU is not a concern, but space is, and the data set is
  518. # composed of many HyperLogLogs with cardinality in the 0 - 15000 range.
  519. hll-sparse-max-bytes 3000
  520.  
  521. # 启用哈希刷新,每100个CPU毫秒会拿出1个毫秒来刷新Redis的主哈希表(顶级键值映射表)。
  522. # redis所用的哈希表实现(见dict.c)采用延迟哈希刷新机制:你对一个哈希表操作越多,哈希刷新
  523. # 操作就越频繁;反之,如果服务器是空闲的,那么哈希刷新就不会完成,哈希表就会占用更多的一些
  524. # 内存而已。
  525. #
  526. # 默认是每秒钟进行10次哈希表刷新,用来刷新字典,然后尽快释放内存。
  527. #
  528. # 建议:
  529. # 如果你对延迟比较在意,不能够接受Redis时不时的对请求有2毫秒的延迟的话,就用
  530. # "activerehashing no",如果不太在意延迟而希望尽快释放内存就设置"activerehashing yes"
  531. activerehashing yes
  532.  
  533. # 客户端的输出缓冲区的限制,可用于强制断开那些因为某种原因从服务器读取数据的速度不够快的客户端,
  534. # (一个常见的原因是一个发布/订阅客户端消费消息的速度无法赶上生产它们的速度)
  535. #
  536. # 可以对三种不同的客户端设置不同的限制:
  537. # normal -> 正常客户端
  538. # slave -> slave和 MONITOR 客户端
  539. # pubsub -> 至少订阅了一个pubsub channel或pattern的客户端
  540. #
  541. # 下面是每个client-output-buffer-limit语法:
  542. # client-output-buffer-limit <class><hard limit> <soft limit> <soft seconds>
  543.  
  544. # 一旦达到硬限制客户端会立即被断开,或者达到软限制并持续达到指定的秒数(连续的)。
  545. # 例如,如果硬限制为32兆字节和软限制为16兆字节/10秒,客户端将会立即断开
  546. # 如果输出缓冲区的大小达到32兆字节,或客户端达到16兆字节并连续超过了限制10秒,就将断开连接。
  547. #
  548. # 默认normal客户端不做限制,因为他们在不主动请求时不接收数据(以推的方式),只有异步客户端
  549. # 可能会出现请求数据的速度比它可以读取的速度快的场景。
  550. #
  551. # pubsub和slave客户端会有一个默认值,因为订阅者和slaves以推的方式来接收数据
  552. #
  553. # 把硬限制和软限制都设置为0来禁用该功能
  554. client-output-buffer-limit normal 0 0 0
  555. client-output-buffer-limit slave 256mb 64mb 60
  556. client-output-buffer-limit pubsub 32mb 8mb 60
  557.  
  558. # Redis调用内部函数来执行许多后台任务,如关闭客户端超时的连接,清除未被请求过的过期Key等等。
  559. #
  560. # 不是所有的任务都以相同的频率执行,但Redis依照指定的“hz”值来执行检查任务。
  561. #
  562. # 默认情况下,“hz”的被设定为10。提高该值将在Redis空闲时使用更多的CPU时,但同时当有多个key
  563. # 同时到期会使Redis的反应更灵敏,以及超时可以更精确地处理。
  564. #
  565. # 范围是1到500之间,但是值超过100通常不是一个好主意。
  566. # 大多数用户应该使用10这个默认值,只有在非常低的延迟要求时有必要提高到100。
  567. hz 10
  568.  
  569. # 当一个子进程重写AOF文件时,如果启用下面的选项,则文件每生成32M数据会被同步。为了增量式的
  570. # 写入硬盘并且避免大的延迟高峰这个指令是非常有用的
  571. aof-rewrite-incremental-fsync yes

[转]Reids配置文件redis.conf中文详解的更多相关文章

  1. Reids配置文件redis.conf中文详解

    redis的各种配置都是在redis.conf文件中进行配置的. 有关其每项配置的中文详细解释如下: 附redis.conf英文原版: # Redis configuration file examp ...

  2. Nginx配置文件nginx.conf中文详解(转)

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  3. Redis 配置文件 redis.conf 项目详解

    Redis.conf 配置文件详解 # [Redis](http://yijiebuyi.com/category/redis.html) 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, ...

  4. Nginx配置文件nginx.conf中文详解【转】

    PS:Nginx使用有两三年了,现在经常碰到有新用户问一些很基本的问题,我也没时间一一回答,今天下午花了点时间,结合自己的使用经验,把Nginx的主要配置参数说明分享一下,也参考了一些网络的内容,这篇 ...

  5. Nginx 配置文件nginx.conf中文详解

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  6. redis conf 中文详解

    # Redis示例配置文件 # 注意单位问题:当需要设置内存大小的时候,可以使用类似1k.5GB.4M这样的常见格式: # # 1k => 1000 bytes # 1kb => 1024 ...

  7. Nginx配置文件nginx.conf中文详解(总结)

     PS:这篇是目前最完整的Nginx配置参数中文说明.更详细的模块参数请参考:http://wiki.nginx.org/Main                 #定义Nginx运行的用户和用户组 ...

  8. Nginx配置文件nginx.conf中文详解

    #定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数.worker_processes 8; #全局错误日志定义类型,[ debug | in ...

  9. (总结)Nginx配置文件nginx.conf中文详解

    #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | ...

随机推荐

  1. go中&^(按位置零)符号的含义

    go中有一个 &^ 的运算符,它代表的是按位置零 首先来看下几个输出例子: i := 1 &^ 0 fmt.Println("1 &^ 0 -- ",i) ...

  2. MQTTv5.0 ---AUTH – 认证交换

    AUTH报文被从客户端发送给服务端,或从服务端发送给客户端,作为扩展认证交换的一部分,比如质询/ 响应认证.如果CONNECT报文不包含相同的认证方法,则客户端或服务端发送AUTH报文将造成协议错 误 ...

  3. 基于 DNS 动态发现方式部署 Etcd 集群

    使用discovery的方式来搭建etcd集群方式有两种:etcd discovery和DNS discovery.在 「基于已有集群动态发现方式部署etcd集群」一文中讲解了etcd discove ...

  4. docker 安装 sqlserver 数据库

    具备条件: 1.服务器需要大于2G内存.如果不够则可能无法正常启动,查看日志报如下错误:This program requires a machine with at least 2000 megab ...

  5. latex制作表格-跨行跨列

    1.列的合并,使用 \multicolumn{跨几列}{格式}{填充内容} \documentclass[UTF8]{ctexart} \begin{document} 三囚犯问题进行300次实验后\ ...

  6. php 获取当前IP地址

    function getIP() { return isset($_SERVER["HTTP_X_FORWARDED_FOR"])?$_SERVER["HTTP_X_FO ...

  7. JavaScript由来

    在互联网时代,网速还很差劲的时候,表单输入数据的合法性验证需要与服务器交换数据,从而加重了使用者的负担. 网景公司为了解决这种简单问题开发了JavaScript.在1995年2月网景公司在发布自己的浏 ...

  8. C#读写设置修改调整UVC摄像头画面-焦点

    有时,我们需要在C#代码中对摄像头的焦点进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像 ...

  9. 关于乌班图18.04安装mysql不提示设置密码解决方案

    1.下载安装mysql sudo apt-get update sudo apt-get install -y mysql-server mysql-client //下载mysql 运行mysql时 ...

  10. Jackson动态JSON处理

    https://www.baeldung.com/jackson-mapping-dynamic-object https://www.baeldung.com/jackson-deserializa ...