redis.conf配置选项说明以及aof与rdb出现的问题解决方法.

注:REDIS CLUSTER 之后的配置暂时没有列出来。实在是太多了。

1、include
解释:引入其它配置文件。比如说当你有多个server,而有一些配置项是它们公用的,那么你可以将这些公用的配置项写进一个配置文件common.conf里,
然后这些server再include这个配置文件,这些server自己的配>置项则分别写在自己的配置文件里。
示例:include /path/to/common.conf

2、loadmodule
解释:此配置项尚未了解。注释是这样的:启动时加载模块,如果server无法加载模块,则此配置会被忽略。可以使用多个loadmodule。
示例:loadmodule /path/to/my_module.so

3、bind
解释默认情况下,redis 在 server 上所有有效的网络接口上监听客户端连接。如果只想让它在一个或多个网络接口上监听,
那你就绑定一个IP或者多个IP。多个ip空格分隔即可。
示例: bind 192.168.1.100 10.0.0.1
bind 127.0.0.1 ::1

4、protected-mode
解释:当开启后,禁止公网访问redis。它启用的条件有两个,第一是没有使用bind,第二是没有设置访问密码。
示例:protected-mode yes

5、port
解释:指定该redis server监听的端口号。默认是6379,如果指定0则不监听。
示例:port 6379

6、tcp-backlog
解释:此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端>速度缓慢的时候,可以将这二个参数一起参考设定。
示例:tcp-backlog 511

7、unixsocket
解释:指定 unix socket 的路径。
示例:unixsocket /tmp/redis.sock

8、unixsocketperm
解释:指定 unix socket file 的权限。
示例:unixsocketperm  755

9、timeout
解释:当客户端闲置多少秒后关闭连接,如果设置为0表示关闭该功能。
示例:timeout  30

10、tcp-keepalive
解释:单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是300S
示例:tcp-keepalive 300

11、daemonize
解释:是否以守护模式启动,默认为no,配置为yes时以守护模式启动,这时redis instance会将进程号pid写入默认文件/var/run/redis.pid。
示例:daemonize yes

12、supervised
解释:可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的。
示例:supervised no

13、pidfile
解释:配置pid文件路径。当redis以守护模式启动时,如果没有配置pidfile,pidfile默认值是/var/run/redis.pid 。
示例:pidfile /var/run/redis_6379.pid

14、loglevel
解释:日志级别。可选项有:debug(记录大量日志信息,适用于开发,测试阶段); verbose(较多日志信息); notice(适量日志信息,使用于生产环境); warning(仅有部分重要,关键信息才会被记录)。
示例: loglevel通知

15,日志文件
解释:日志文件的位置,当指定为空字符串时,为标准输出,如果redis已经保护进程模式运行,那么日志将会输出到/ dev / null。
示例: logfile ""

16,启用系统日志,
解释:。是否把日志记录到系统日志(?何意)
示例: syslog-enabled no

17,系统日志-IDENT
解释:设置系统日志的ID
示例: syslog-ident redis

18,系统日志,设施
解释:指定系统日志设备(设施),必须是用户或则LOCAL0到为local7。
示例: syslog-facility local0

19,数据库
解释:设置数据库的数据。默认的数据库是DB 0,可以在每个连接上使用select 命令选择一个不同的数据库,dbid是一个介于0到databases - 1之间的数值。
示例:数据库16

20,保存
解释:保存数据到磁盘。格式是:save  ,含义是在秒秒之后至少有改变个键发生改变则保存一次。
示例: save 900 1
save 300 10
save 60 10000

21,停止写上-bgsave错误
解释:默认情况下,如果redis最后一次的后台保存失败,redis将停止接受写操作,这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘,否则就会没人注意到灾难的发生。如果后台保存进程重新启动工作>了,redis也将自动的允许写操作。然而你要安装了靠谱的监控,你可能不希望redis这样做,那你就改成不好了。
示例: stop-writes-on-bgsave-error no

22,rdbcompression
解释:是否在dump .rdb数据库的时候压缩字符串,默认设置为yes。如果你想节约一些cpu资源的话,可以把它设置为no,这样的话数据集就可能会比较大。
示例: rdbcompression是

23,rdbchecksum
解释:是否CRC64校验RDB文件,会有一定的性能损失(大概10%)。
示例: rdbchecksum是

24,dbfilename
解释: rdb文件的名字。
示例: dbfilename dump.rdb

25,DIR
解释:数据库存放目录必须是一个目录,AOF文件也会保存到该目录下。
示例: dir ./

26,slaveof
解释:设置本机为slave服务。格式:slaveof  。设置master服务的IP地址及端口,在Redis启动时,它会自动从主进程数据同步。
示例: slaveof 192.168.0.1 6379

27,masterauth
解释:当主服务设置了密码保护时,斯拉夫服务连接主的密码。
示例: masterauth 123456

28,从属服务陈旧数据
解释:当一个slave与master失去联系时,或者复制正在进行的时候,slave应对请求的行为:1)如果为yes(默认值),slave仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时
候; 2)如果为no,在你执行除了info和salveof之外的其他命令时,slave都将返回一个“SYNC with master in progress”的错误。
示例: slave-serve-stale-data yes

29,从属只读
解释:。设置从是否是只读的从2.6版起,从默认是只读的。
示例: slave-read-only yes

30,REPL-无盘同步
解释:主从数据复制是否使用无硬盘复制功能。
示例:repl-diskless-sync no

31、repl-ping-slave-period
解释:指定slave定期ping master的周期,默认10秒钟。
示例:repl-ping-slave-period 10

32、repl-timeout
解释:设置主库批量数据传输时间或者ping回复时间间隔,默认值是60秒 。
示例:repl-timeout 60

33、repl-disable-tcp-nodelay
解释:指定向slave同步数据时,是否禁用socket的NO_DELAY选 项。若配置为“yes”,则禁用NO_DELAY,则TCP协议栈会合并小包统一发送,这样可以减少主从节点间的包数量并节省带宽,但会增加数据同步到 slave的>时间。若配置为“no”,表明启用NO_DELAY,则TCP协议栈不会延迟小包的发送时机,这样数据同步的延时会减少,但需要更大的带宽。 通常情况下,应该配置为no以降低同步延时,但在主从节点间网络负载已经很高的>情况下,可以配置为yes。
示例:repl-disable-tcp-nodelay no

34、repl-backlog-size
解释:设置主从复制backlog容量大小。这个 backlog 是一个用来在 slaves 被断开连接时存放 slave 数据的 buffer,所以当一个 slave 想要重新连接,通常不希望全部重新同步,只是部分同步就够了,仅仅传递 slave 在断开连接时丢失的这部分数据。这个值越大,salve 可以断开连接的时间就越长。
示例:repl-backlog-size 1mb

35、repl-backlog-ttl
解释:配置当master和slave失去联系多少秒之后,清空backlog释放空间。当配置成0时,表示永远不清空。
示例:repl-backlog-ttl 3600

36、slave-priority
解释:当 master 不能正常工作的时候,Redis Sentinel 会从 slaves 中选出一个新的 master,这个值越小,就越会被优先选中,但是如果是 0 , 那是意味着这个 slave 不可能被选中。 默认优先级为 100。
示例:slave-priority 100

37、requirepass
解释:设置redis连接密码。
示例:requirepass foobared

38、rename-command
解释:将命令重命名。为了安全考虑,可以将某些重要的、危险的命令重命名。当你把某个命令重命名成空字符串的时候就等于取消了这个命令。
示例:rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
rename-command CONFIG ""

39、maxclients
解释:设置客户端最大并发连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数-32(redis server自身会使用一些),如果设置 maxclients 0,表示不作限制。当客户>端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息。
示例:maxclients 10000

40、maxmemory
解释: 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可>以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区,格式:maxmemory  。
示例:maxmemory 1024000

41、maxmemory-policy
解释:当内存使用达到最大值时,redis使用的清楚策略。有以下几种可以选择(明明有6种,官方配置文件里却说有5种可以选择?):
1)volatile-lru   利用LRU算法移除设置过过期时间的key (LRU:最近使用 Least Recently Used )
2)allkeys-lru   利用LRU算法移除任何key
3)volatile-random 移除设置过过期时间的随机key
4)allkeys-random  移除随机key
5)volatile-ttl   移除即将过期的key(minor TTL)
6)noeviction  noeviction   不移除任何key,只是返回一个写错误 。默认选项
示例:maxmemory-policy noeviction

42、maxmemory-samples
解释:LRU 和 minimal TTL 算法都不是精准的算法,但是相对精确的算法(为了节省内存),随意你可以选择样本大小进行检测。redis默认选择3个样本进行检测,你可以通过maxmemory-samples进行设置 样本数。
示例:maxmemory-samples 5

43、appendonly
解释:是否启用aof持久化方式 。即是否在每次更新操作后进行日志记录,默认配置是no,即在采用异步方式把数据写入到磁盘,如果不开启,可能会在断电时导致部分数据丢失。
示例:appendonly no

44、appendfilename
解释:更新日志文件名,默认值为appendonly.aof 。
示例:appendfilename "appendonly.aof"

45、appendfsync
解释:aof文件刷新的频率。有三种:
1)no 依靠OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差。
2) always 每提交一个修改命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全。
3) everysec 每秒钟都调用fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据。
示例:appendfsync everysec

46、no-appendfsync-on-rewrite
解释:指定是否在后台aof文件rewrite期间调用fsync,默认为no,表示要调用fsync(无论后台是否有子进程在刷盘)。Redis在后台写RDB文件或重写AOF文件期间会存在大量磁盘IO,此时,在某些linux系统中,>调用fsync可能会阻塞。
示例:no-appendfsync-on-rewrite no

47、auto-aof-rewrite-percentage
解释:当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 。当AOF文件大小的增长率大于该配置项时自动开启重写。
示例:auto-aof-rewrite-percentage 100

48、auto-aof-rewrite-min-size
解释:当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 。当AOF文件大小大于该配置项时自动开启重写。
示例:auto-aof-rewrite-min-size 64mb

49、aof-load-truncated
解释:redis在启动时可以加载被截断的AOF文件,而不需要先执行 redis-check-aof 工具。
示例:aof-load-truncated yes

50、lua-time-limit
解释:一个Lua脚本最长的执行时间,单位为毫秒,如果为0或负数表示无限执行时间,默认为5000。
示例:lua-time-limit 5000.
1,如果执行了错误的操作,"可以在AOF重写之前关闭Redis,删除AOF中的错误操作,重启服务器即可".如果AOF被重写,则无法通过Redis恢复.AOF文件体积通常大于RDB,因此加载时间长,这也是AOF重写的原因之一.AOF重写后包含了当前数据集的最小命令集合.
2,Redis宕机后,无法重启.可能是AOF文件损坏 "到AOF文件目录,备份一份AOF后,通过redis-check-aof --fix appendonly.aof 来修复AOF文件,重启Redis即可".
3,Redis搭建了主从,并且先给slave服务器配置了RDB或AOF,随后给master服务器配置RDB或AOF.重启后发现两个服务器数据被清空.
因为配置slave的持久化并重启后,slave的持久化文件为空,随后从master同步数据,并存储到RDB/AOF文件中.随后配置master的RDB/AOF,master重启后因为之前没有数据备份,导致master数据为空,随后slave同步master,导致slave也为空,即数据被清空了.
"在问题出现之前,应当将slave的RDB/AOF拷贝给master. 注意:Redis在RDB与AOF同时开启的情况下,优先读取AOF文件 -.-"
4,Redis客户端通过config set命令可以设置如rdb到aof的转换."但此时并没有修改配置文件,因此重启后配置内容就会被遗忘,切记".

你可能感兴趣的:(Redis,编程)