redis配置文件详解

一般配置:
  1. 如果要用配置文件来启动redis的话,配置文件的路径必须是第一个参数,例如:./redis-server /xxx/xxx/redis.conf。
  2. 如果要用到计算机存储单位的话,要注意以下:
    a) 1k = 1000byte.
    b) 1kb = 1024byte.
    c) 1M = 10001000byte.
    d) 1Mb = 1024
    1024byte.
    e) 1G = 100010001000byte.
    f) 1GB = 102410241024byte.
    大小写不敏感1g=1G
  3. include /xxx/xxxx/xxx.conf 引用外部配置文件,这在多台redis服务器共享配置时比较有用,先引用公共配置,再自定义配置。但是又几个注意点:
    a) 优先级问题:配置文件前面的内容会被后面的内容覆盖,例如:假如我外部配置文件B配置了port 6380,并被redis启动时的A配置文件引用了。A有配置port 6379,假如外部配置文件B在A配置文件中引用的位置在port 6379 前,6379就会覆盖6380,假如外部配置文件B在A配置文件中引用的位置在port 6379 后,6380就会覆盖6379。总的来说相同配置谁在越后面谁的优先级越高。
    b) 外部配置文件不会被config rewrite 命令所修改。
  4. bind 127.0.0.1 192.168.18.128 将redis与某ip绑定,客户端就只能用该ip来连接该redis服务器,可绑定多个,也可以不绑定,不绑定的话redis会扫描你机器所有的网络接口来绑定,这可能使你的redis服务暴露在外网中,这是不明智的,所以一般手动绑定,默认绑定127.0.0.1,表示只能本地访问,不允许别的机器远程访问。必须要绑定在机器的某个网络接口上,不然客户端连接的时候会报No route to host 异常。
  5. protected-mode yes :是否开启安全模式,默认开启,一般都要开启吧。除非你想要不安全的redis。
  6. port 6379 :redis的启动端口,默认6379。
  7. tcp-backlog 511 :这是一个tcp连接队列,设置队列大小,具体可自行百度,在高并发的请求下设置一个高的tcp-backlog可以避免客户端连接缓慢的问题。这个最终的值是由两个因素决定的,一个是liunx 系统的/proc/sys/net/coresomaxconn文件的值和这里设置的值(这个我看了我的linux机3.10.0为128),取两者的小值。所以如果要设置这里的值就要关注两个值才能得到想要的目标。
  8. timeout 0 :客户端连接空闲多少秒后就断开连接,默认0,不断开。
  9. tcp-keepalive 300 :心跳检测的时间间隔,设置为0时表示不进行心跳检测,单位秒。
  10. daemonize no :是否已守护进程的方式启动redis,默认否。如果设置yes,redis会以守护进程的形式后台启动并且把启动的进程号写在pid文件中
  11. pidfile /var/run/redis_6379.pid 设置pid文件路径。
  12. loglevel notice :日志等级,有debug、verbose、notice、warning四个等级,一般开发测试环境用debug,生产环境用notice,我司就是这个配置。
  13. logfile “” :日志文件,如果是空字符串,表示日志信息会输出在控制台上。如果redis是以守护进程的方式启动的话,日志信息会被记录到/dev/null文件中。
  14. syslog-enabled no :是否开启系统日志,默认不开启。
  15. syslog-ident redis :如果开启了系统日志,这里设置系统日志的标志。默认redis。
  16. syslog-facility local0 :设置生成系统日志工具,只能是USER和local0-local7。
  17. databases 16 :设置数据库的大小,默认16个,0-15,可以select 0-15选择数据库。
关于持久化的配置:

RDB的持久化策略配置模式:

  1. save second changes //second秒时间内,key被改动的次数达到changes次或以上就触发RDB持久化。可配置多个,多个策略之间是或关系,也可以禁用RDB,可通过不设置策略或者save “” 禁用。
    默认有:
    save 900 1 :15分钟内key被修改1次就触发RDB持久化。
    save 300 10 :5分钟内key被修改10次就触发RDB持久化。
    save 60 10000 :1分钟内key被修改10000次就触发RDB持久化。
    也可以手动触发RDB,shutdown、flushall(慎用)、save、bgsave等命令会主动触发RDB持久化。
  2. stop-writes-on-bgsave-error yes :在后台RDB持久化报错的情况下是否停止主进程的写操作,默认是,一般也是是,这是为了数据安全性,除非你有特定的手段保证数据安全或者不care,否则一般设置yes。
  3. rdbcompression yes :是否对生生的rdb文件进行压缩,默认是。
  4. rdbchecksum yes :是否对生成的rdb文件进行校验,默认是。这会损失大概10%的性能。
  5. dbfilename “dump.rdb” 使用的rdb文件名字,生成rdb文件时使用这个名字,同样,恢复数据时也是使用该文件名的rdb文件。
  6. dir ./ :设置redis的工作目录,默认redis的启动路径。
关于主从复制的相关配置:
  1. replicaof masterip masterport //配置复制某台master的数据。在配置文件里面配置的话每次启动redis就会自定去复制,成为slaver,如果用命令slaveof 的话,slaver重连的话不会再复制该master。
  2. masterauth 主机密码 //如果master设置了密码(requirepass为非空),则slaver要复制时要配置该主机密码项才行。
  3. replica-serve-stale-data yes //主从数据同步期间是否可以处理新的客户端请求,默认可以。如果设置为no,则在同步期间不会接受客户端的请求,除了INFO, replicaOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE,CONFIG,SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB,COMMAND, POST, HOST: and LATENCY这些命令。其实这个就是设置同步或者异步的问题,设置为yes的话,主从复制异步进行,但是这样可能会导致数据不一致,但是性能要好,如果设置为no,并且redis作为一个高速的缓存服务器的话,设置为no性能会下降很多。
  4. replica-read-only yes //slaver副本是否只读,如果设为yes表示slaver只能接受读请求。实现读写分离,如果设置为no,则副本也可以写数据。默认yes。但是副本写的数据不会同步到master或者任何一个其他的slaver,只能是这个副本特定的数据,这就会导致数据不一致情况,所以一般设为yes然后执行读写分离。

主从复制有分增量复制和全量复制,增量复制是发送master的一个缓冲区的命令到slaver执行以同步数据,这个缓冲区是一个先进先出队列,默认大小1M,可设置,master会根据数据偏移量判断缓冲区中的命令能否使得主从服务器的数据库状态一致,如果能,就使用增量复制,如果不能,就使用全量复制。
全量复制:生成一个RDB文件发送到副本中直接恢复数据。
生成RDB文件的方式有两种策略:
1 . 生成的RDB保存在本地磁盘,然后再把RDB文件发送给副本,这个策略使得RDB一旦生成之后,所有的副本就可以进来进行复制。
2 . 生成的RDB文件数据直接封装在socket中发送给副本,如果有新副本进来发现正在发送的话就只能等待这轮发送完成才能进行复制,所以为了让更多的副本进来就可以复制,一般会在两个复制动作中加一个时间间隔。
如果磁盘读写很慢,而网络速度很快(大带宽)的话可以使用第二种策略。
5. repl-diskless-sync no //是否把用于同步地RDB文件持久化到磁盘,默认否。
6. repl-diskless-sync-delay 5//如果使用无盘发送RDB策略,也就是repl-diskless-sync设置为yes时这个配置才生效,会使得每次传输到副本的RDB socket会有时间间隔,也就是发送完上一轮,会间隔一段时间才会发送下一轮,这样做会使得有更多的副本可以进来就立即进行同步,因为间隔的时间进来的副本可以立即参与到新一轮的同步中,默认配置5秒,配置为0时禁用该功能不延迟。
7. repl-ping-replica-period 10 //主从之间进行心跳检测的时间间隔,默认10s。
8. repl-timeout 60 //主从复制同步过程超时时间,
9. repl-disable-tcp-nodelay no//默认no,设置为no时,主从同步的延时时间会被降到最低,就是主从会以最快的速度完成同步,但是会同步会消耗较大的带宽。设置为yes时,redis会把同步数据分成若干个较小的tcp报文发送,延时会较高,再40毫秒,但是会消耗较小的带宽,网络拥堵时建议使用yes。
10.repl-backlog-size 1mb //积压缓冲区大小,该缓冲区用于实现增量同步,是一个先进先出队列,会记录一定量的最新的写命令,当副本断开连接后重新连接,master会根据副本的offset和缓冲区来判断是否可以用缓冲区的命令来同步副本使得状态一致,如果可以直接使用增量同步。否则使用全量同步。默认大小1mb,可以根据现实来设置值,设置的值越大,到时使用增量同步的几率就越大。master会在第一个副本连接到来时才会分配内存给该缓冲区。
10. repl-backlog-ttl 3600 //当最后一个副本断开连接后,假如在设置时间内(单位秒),没有副本再次连接到该master,该积压缓冲区的内存将会被释放。默认一小时。设置为0就不会释放。
11. replica-priority 100 //副本的优先级,是一个整数,数值越大,优先级越低,0优先级最低。

关于安全的配置:
  1. requirepass “” //是否需要身份验证,默认为空串不需要验证,如果设置为非空串,则密码就是这个非空串,每次连接到服务器之后要执行auth 密码才能继续执行其他命令。
  2. rename-command 原来的命令 后来的命令 //修改命令, 例如rename-command GET PPGET ,修改之后,redis客户端就不能使用GET命令,只能使用PPGET命令,这是一种安全策略。命令修改会追加到AOF文件中,所以如果先修改命令,进行AOF持久化后,在把修改命令取消,然后AOF恢复数据时会失败。
关于客户端的配置:
  1. maxclients 10000 //同一时间最大的客户端连接数,默认10000,超过的客户端连接会拒绝。
关于内存管理的配置:
  1. maxmemory byte //设置redis服务的最大内存,假如超出内存后继续写入数据,就会根据key的失效策略来使key失效。默认0无限制,看你机器内存多少。
  2. maxmemory-policy noevication //当过最大内存时key的失效策略,有8中选择:
    a)volatile-lru:选取距离上一次使用时间间隔最大的key失效,针对可过期key。
    b)allkeys-lru: 选取距离上一次使用时间间隔最大的key失效,针对所有key。
    c)volatile-lfu:选取在一定时间内使用次数最少的key失效,针对可过期key。
    d)allkeys-lfu:选取在一定时间内使用次数最少的key失效,针对所有key。
    e)volatile-random: 随机选取key失效,针对可过期key。
    f)allkeys-random: 随机选取key失效,针对所有key。
    g) volatile-ttl: 选取寿命最短的可过期键失效。
    h) noevication: 永不失效,如果超过之后的写请求直接返回错误给客户端。
  3. maxmemory-sample 5 //LRU和LFU都不是精确的算法,所以要一些样本数据来使得精确性变高,默认5,但是设置为10时会非常接近精确度。
  4. replica-ignore-maxmemory yes //5.0以后默认yes,也就是对key的失效操作只会发生在master节点。然后同步到副本。
AOF持久化相关配置:

AOF持久化跟RDB持久化可以同时开始,如果同时开启了,redis会使用AOF文件恢复数据。

  1. appendonly no //no不开启AOF持久化,yes开始AOF持久化,默认no不开启。
  2. appendfile “appendonly.aof” //持久化生成的AOF文件名,同样的,恢复数据时也只会使用该文件名的aof文件恢复数据。
  3. appendfsync everysec/always/no //如果开启了AOF持久化,redis每执行完一次写命令都会把该命令追加到一个IO缓冲区中,假如这个配置配置了everysec,则每隔一秒,redis会通知操作系统将缓冲区中的数据flush到磁盘中,假如设置了always,则redis每完成一个写命令,就立刻flush到磁盘中(速度最慢)。假如设置了no,则redis不管何时flush到磁盘中,而是将这个工作交给操作系统(速度最快)。默认everysec。
  4. no-appendfsync-on-rewrite no //在bgsave或者bgrewriteaof期间是否可以进行appendfsync操作,默认可以。因为在bgsave或者bgrewriteaof期间,会有大量的磁盘IO操作,这会使得appendfsync会有较大的阻塞,而appendfsync是在主进程中执行,这就会导致redis阻塞,极大降低性能。设置为yes时,在bgsave或者bgrewriteaof期间,就不能进行appendfsync,这就相当于设置了appendfsync no。可能会有比较大的数据丢失的可能,但是性能比较快。具体如何取舍看具体。
  5. auto-aof-rewrite-percentage 100 //这个是触发自动AOF重写的条件之一,redis会记录最后一次重写后的aof文件大小,然后当AOF文件大小膨胀到大于等于设置的倍数之后,就触发这个条件,默认100,当最后一次重写后AOF文件为64MB,当AOF文件追加到128MB时触发该条件。如果是初次AOF重写,这个条件默认触发。
  6. auto-aof-rewirte-min-size 64mb //触发自动AOF重写的最小AOF文件大小,当AOF文件达到这个设置值时触发该条件。默认64mb。
  7. aof-load-truncated yes //如果生成的aof因为某些原因尾部被截断了,用该aof文件是否可以启动redis载入数据,默认yes可以,但是被截断的数据不会载入。设置no的话,redis视图载入这些aof文件来启动会失败。这里针对的是从后面开始截断,如果是开头或者中间截断,则怎么设置都会启动失败,可以启动redis-check-aof来修复aof文件。
  8. aof-use-rdb-preamble yes //redis4.0以后新增的功能,在redis执行aof重写时,重写的文件会使用RDB+AOF文件相结合,RDB记录当时快照数据,AOF格式的记录则记录重写过程中执行的写命令。这样既能保证数据的完整度高,又能实现重新启动时快速载入数据。
关于集群的配置:
  1. cluster-enabled yes //是否开启集群模式,默认不开启。
  2. cluster-config-file nodes-6379.conf //集群配置文件,每个集群节点都应该有一个集群的配置文件,这个配置文件不需要手动地修改,应该由集群节点修改。每个节点都应该有一份独一无二的集群配置文件。
  3. cluster-node-timeout 15000 //集群节点超时,用于判断节点是否可达,是否处于可用状态,如果心跳检测超时的话,判断集群处于下线状态。单位毫秒。
  4. cluster-replica-validity-factor 10 //如果从节点的数据太旧的话,单主节点下线时将不会进行故障转移,而是直接下线。而这个配置就是判断节点数据够不够旧的一个指标。判断数据旧不旧的指标是副本最近一次与主节点进行通信的时间距现在的时长,计算公式是n=(cluster-node-timeout * cluster-replica-validity-factor)+ repl-ping-replica-period。按默认配置计算 n=15*10+10=160s。主从节点之间超过160秒没通信就不会故障转移,而是集群直接下线。如果主节点有多个从节点的话,按照offset由大到小排序再计算。故障转移失败后由于有哈希槽没被节点管理,整个集群会直接下线。
  5. cluster-migration-barrier 1 //有多个副本的主节点可以把它们的副本转移到集群中其他没有副本的主节点,但是这里有一个条件,就是这里设置的值,这个值是当前主节点下保证自身有这么多个工作中的从节点的情况下,才会把多余的从节点用于转移,假如设置为1,那就该主节点要保证自身有一个从节点可以用,然后剩余的从节点可以用于转移。如果禁用该功能的话可以将值设置为一个很大的值。假如设置为0的话,对测试环境有用,在生产环境下使用会很危险。
  6. cluster-require-full-coverage yes //默认集群中假如有一个或以上的哈希槽没有被集群中的任何一个节点管理,整个集群都会下线,但是假如这里配置为no的话,就算有哈希槽没被管理,集群也不会下线,只是会分配到该哈希槽的key的操作会无法工作。
  7. cluster-replica-no-failover no //默认no假如设置为yes,当主节点下线时,不会进行自动故障转移。但是可以手动故障转移。有时会用在多数据中心操作的情况下有用。
慢日志配置:
  1. slowlog-log-slower-than 10000 //这是一个阈值,当某个命令的执行时间超过该阈值时,就会把该命令的详细情况记录在日志里面,单位微妙。默认10000,当设置为0时,就是把所有命令都记录在慢查询日志里面。这里的执行时间不包括IO操作时间例如与客户端交互,发送命令时间和响应请求时间等等,而是仅仅是执行该命令的时间。
  2. slowlog-max-len 128 //慢日志的条数,假如达到了这个值,又有新的慢查询进来,就会把最老的慢查询删除。
Redis 是一个开源的内存数据存储系统,主要用作缓存和数据库。Redis 配置文件Redis 服务器的配置文件,它包含了 Redis 服务器的所有配置选项。 Redis 配置文件的位置在 Redis 安装目录下的 redis.conf 文件中,可以通过修改该文件来配置 Redis 服务器。下面是 Redis 配置文件的一些常用配置选项的详解: 1. bind:Redis 服务器的绑定地址,在默认情况下,Redis 服务器会绑定所有可用的网络接口,可以通过设置 bind 选项来指定 Redis 服务器的绑定地址。 2. port:Redis 服务器的监听端口,默认情况下,Redis 服务器会监听 6379 端口,可以通过设置 port 选项来指定 Redis 服务器的监听端口。 3. daemonize:Redis 服务器是否以守护进程的方式启动,默认情况下,Redis 服务器会以前台进程的方式启动,可以通过设置 daemonize 选项来指定 Redis 服务器是否以守护进程的方式启动。 4. logfile:Redis 服务器的日志文件路径,默认情况下,Redis 服务器的日志文件路径为标准输出,可以通过设置 logfile 选项来指定 Redis 服务器的日志文件路径。 5. databases:Redis 服务器的数据库数量,默认情况下,Redis 服务器只有一个数据库,可以通过设置 databases 选项来指定 Redis 服务器的数据库数量。 6. maxclients:Redis 服务器的最大连接数,默认情况下,Redis 服务器的最大连接数为 10000,可以通过设置 maxclients 选项来指定 Redis 服务器的最大连接数。 7. maxmemory:Redis 服务器的最大内存使用量,默认情况下,Redis 服务器不限制最大内存使用量,可以通过设置 maxmemory 选项来指定 Redis 服务器的最大内存使用量。 以上是 Redis 配置文件的一些常用配置选项的详解,通过修改这些配置选项,可以对 Redis 服务器进行各种配置和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值