一、Units单位
- 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit
注:对大小写不敏感,单位不区分大小写
maxmemory 8GB
二、INCLUDES包含
- 和我们的Struts2配置文件类似,可以通过includes包含,redis.conf可以作为总闸,包含其他文件
例如:
include /path/to/other.conf
include /path/to/local.conf
三、GENERAL通用
-
daemonize:设置为yes表示指定Redis以守护进程的方式启动(后台启动)。默认值为 no
-
pidfile:配置PID文件路径,当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/redis/run/redis_6379.pid 文件里面
-
loglevel :定义日志级别。默认值为notice,有如下4种取值:
debug(记录大量日志信息,适用于开发、测试阶段)
verbose(较多日志信息)
notice(适量日志信息,使用于生产环境)
warning(仅有部分重要、关键信息才会被记录) -
logfile :配置log文件地址,默认打印在命令行终端的窗口上
-
databases:设置数据库的数目。默认的数据库是DB 0 ,可以在每个连接上使用select 命令选择一个不同的数据库,dbid是一个介于0到databases - 1 之间的数值。默认值是 16,也就是说默认Redis有16个数据库。
-
timeout :空闲多少时间关闭连接
-
Tcp-keepalive:单位为s,如果设置为0,则不会进行Keepalive检测,建议设置成60
四、SNAPSHOTTING快照
- save:这里是用来配置触发 Redis的持久化条件,也就是什么时候将内存中的数据保存到硬盘。默认如下配置:
save 900 1:表示900 秒内如果至少有 1 个 key 的值变化,则保存
save 300 10:表示300 秒内如果至少有 10 个 key 的值变化,则保存
save 60 10000:表示60 秒内如果至少有 10000 个 key 的值变化,则保存
当然如果你只是用Redis的缓存功能,不需要持久化,那么你可以注释掉所有的 save 行来停用保存功能。可以直接一个空字符串来实现停用:save “” - stop-writes-on-bgsave-error :默认值为yes。当启用了RDB且最后一次后台保存数据失败,Redis是否停止接收数据。这会让用户意识到数据没有正确持久化到磁盘上,否则没有人会注意到灾难(disaster)发生了。如果Redis重启了,那么又可以重新开始接收数据了
- rdbcompression ;默认值是yes。对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能,但是存储在磁盘上的快照会比较大
- rdbchecksum :默认值是yes。在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。>dbfilename :设置快照的文件名,默认是 dump.rdb
- dir:设置快照文件的存放路径,这个配置项一定是个目录,而不能是文件名。使用上面的 dbfilename 作为保存的文件名
五、REPLICATION复制
- replicaof 当设置本机为从服务器时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
- masterauth 当master服务设置了密码保护时,从服务器连接master的密码
- replica-serve-stale-data yes 当主从连接中断,或者主从复制建立期间,是否允许从服务器对外提供服务。默认为yes,即允许对外提供服务,但有可能读到脏数据
- replica-read-only yes 将从服务器设置为只读模式。需要注意,只读模式针对的只是客户端的写操作,对管理命令无效
- repl-diskless-sync no 是否使用无盘复制。为了降低主节点磁盘开销,Redis支持无盘复制,生成的RDB文件不保存到磁盘而是直接通过网络发送给从节点。无盘复制适用于主节点所在机器磁盘性能较差但网络宽带较充裕的场景。需要注意的是,无盘复制目前依然处于实验阶段
- repl-ping-replica-period 10 ,repl-diskless-sync-delay 5 master每隔一段固定的时间向从服务器发送一个PING命令
- repl-timeout 复制超时时间
- repl-disable-tcp-nodelay 设置为yes,主节点会等待一段时间才发送TCP数据包,具体等待时间取决于Linux内核,一般是40毫秒。适用于主从网络环境复杂或带宽紧张的场景。默认为no
- repl-backlog-size 复制积压缓冲区,复制积压缓冲区是保存在主节点上的一个固定长度的队列。用于从Redis 2.8开始引入的部分复制
- repl-backlog-ttl 如果master上的从服务器全都断开了,且在指定的时间内没有连接上,则backlog会被master清除掉。repl-backlog-ttl即用来设置该时长,默认为3600s,如果设置为0,则永不清除
- replica-priority 设置从服务器的优先级,用于Redis Sentinel主从切换时使用,值越小,则提升为主的优先级越高。需要注意的是,如果设置为0,则代表该从服务器不参加选主
- replica-announce-ip,replica-announce-port 常用于端口转发或NAT场景下,对Master暴露真实IP和端口信息
六、SECURITY安全
一般不做auth方面操作
七、LIMITS限制
- maxmemory 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区
- maxmemory-policy noeviction
当内存使用达到最大值时,redis使用的清除策略。
(1)volatile-lru:使用LRU算法移除key,只对设置了过期时间的键
(2)allkeys-lru:使用LRU算法移除key
(3)volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键
(4)allkeys-random:移除随机的key
(5)volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key
(6)noeviction:不进行移除。针对写操作,只是返回错误信息 - maxmemory-samples 5 设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小,
redis默认会检查这么多个key并选择其中LRU的那个 - replica-ignore-maxmemory yes 是否忽略maxmemory设置
八、APPEND ONLY MODE追加
- appendonly no 是否开启aof
- appendfsync
执行fynsc的策略
取值范围:
1)、 everysec 每秒执行sync 折衷方案
2 )、always 每次写操作都立刻写入到aof文件。慢,但是最安全
3 )、no 不要立刻刷,只有在操作系统需要刷的时候再刷。比较快
设置always往往比较影响性能,但是数据丢失的风险最低
一般推荐设置everysec - no-appendfsync-on-rewrite no 设置yes后,如果有保存的进程在执行,则不执行aof的appendfsync策略的fsync
- auto-aof-rewrite-percentage 相对于上次aof文件大小的增长百分比如果超过这个值,则重写aof
- auto-aof-rewrite-min-size 自动重写aof文件的最小大小,比 auto-aof-rewrite-percentage优先级高
- aof-load-truncated 加入aof文件被截断了
1)、 设置yes,redis可以启动并且显示日志告知这个信息
2 )、设置no,redis启动失败,显示错误 - aof-use-rdb-preamble aof前部分用rdb,后面保存时缓存的命令还是用aof格式
优点:保存和恢复更快
设置yes开启
九、NETWORK 网络
- bind 限定访问的主机地址。如果没有bind,就是任意ip地址都可以访问。 生产环境 下,需要写自己应用服务器的ip地址
- protected-mode 安全防护模式。如果没有指定bind指令,也没有配置密码,那么保 护模式就开启,只允许本机访问
- port 端口号 默认是6379
- timeout 超时时间。 默认永不超时
- tcp-keepalive 对客户端的心跳检测间隔时间
十、REDIS CLUSTER REDIS集群
- cluster-enabled yes
是否开启集群配置。如果配置yes则开启集群功能,此redis实例作为集群的一个节点,否则,它是一个普通的单一的redis实例 - cluster-config-file nodes-6379.conf
虽然此配置的名字叫"集群配置文件",但是此配置文件不能人工编辑,它是集群节点自动维护的文件,主要用于记录集群中有哪些节点、他们的状态以及一些持久化参数等,方便在重启时恢复这些状态。通常是在收到请求之后这个文件就会被更新 - cluster-node-timeout 15000
这是集群中的节点能够失联的最大时间,超过这个时间,该节点就会被认为故障。如果主节点超过这个时间还是不可达,则用它的从节点将启动故障迁移,升级成主节点。注意,任何一个节点在这个时间之内如果还是没有连上大部分的主节点,则此节点将停止接收任何请求。一般设置为15秒即可 - cluster-slave-validity-factor 10
如果设置成0,则无论从节点与主节点失联多久,从节点都会尝试升级成主节点。如果设置成正数,则cluster-node-timeout乘以cluster-slave-validity-factor得到的时间,是从节点与主节点失联后,此从节点数据有效的最长时间,超过这个时间,从节点不会启动故障迁移 - cluster-migration-barrier 1
主节点需要的最小从节点数,只有达到这个数,主节点失败时,它从节点才会进行迁移。更详细介绍可以看本教程后面关于副本迁移到部分 - cluster-require-full-coverage yes
在部分key所在的节点不可用时,如果此参数设置为"yes"(默认值), 则整个集群停止接受操作;如果此参数设置为”no”,则集群依然为可达节点上的key提供读操作
十一、常用配置介绍
-
redis默认不是以守护进程的方式运行,可以通过配置项修改,使用yes启用守护进程
daemonize no -
当redis以守护进程方式运行时,redis默认会把pid写入/var/run/redis.pid文件,可以通过配置pidfile指定
pidfile /var/run/redis.pid -
指定redis监听端口,默认端口是6379
port 6379 -
绑定的主机地址
bing 127.0.0.1 -
当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 300 -
指定日志记录级别,redis总共支持四个级别,debug,verbose,notice,warning,默认为verbose
loglevel verbose -
日志记录方式,默认为标准输出,如果配置redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送出/dev/null
logfile stdout -
设置数据库数量,默认数据库为0,可以使用select命令在连接上指定数据库id
databases 16 -
指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
save -
指定存储至本地数据库时是否压缩数据,默认为yes,redis采用LZF压缩,如果为勒节省CUP时间,可以关闭
rdbcompresslon yes -
指定本地数据库文件名,默认值为dump.rdb
dbfilename dump.rdb -
指定本地数可存放目录
dir ./ -
设置当本机为slav服务时,设置master服务的IP地址及端口,在redis启动时,它会自动从master进行数据同步
slaveof -
当master服务设置勒密码保护时,slav服务连接master的密码
masterauth -
设置redis连接密码,如果配置勒连接密码,客户端在连接redis时需要通过auth提供密码,默认关闭
requirepass foobared -
设置同一时间最大客户端连接数,默认无限制,redis可以同时打开的客户端链接数为redis进程可以打开的最大文件描述符数,如果设置maxclients 0,表示不作限制,当客户端链接数到达限制时,redis会关闭新的连接并向客户端返回max number of clients reached 错误信息
maxclients 128 -
指定redis最大内存限制,redis启动时会把数据加载到内存中,达到最大内存后,redis会尝试清除已到期或即将到期的key,当此方法处理后,仍然达到最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作,redis新的vm机制,会把key存放内存,value会存放再swap区
maxmemory -
指定是否在每次更新操作后进行日志记录,redis在默认的情况下时异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失,因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中,默认为no
-
指定更新日志文件名,默认为appendonly.aof
appendfilename appendonly.aof -
指定更新日志条件,共有3个可选值
1)、no:表示等操作系统进行数据缓存同步到磁盘(快)
2)、always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
3)、everysec:表示每秒同步一次(折中,默认值)
appendfsync everysec -
指定是否启用虚拟内存机制,默认值为no,简单介绍一下,VM机制将数据分页存放,由redis将访问量较少的页即冷数据swap到磁盘上,访问多的页由磁盘自动换出到内存中
vm-enabled no -
虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个redis共享
vm-swap-file /tmp/redis.swap -
将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的,也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值0
vm-max-memory 0 -
redis swap文件分成很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要更加存储的数据大小来设定的(建议:如果存储很多小的对象,page大小最好设置为32或者64bytes;如果存在很大对象,则可以使用更大的page,如果不确定就使用默认值)
vm-page-size 32 -
设置swap文件中的page数据,由于页表是存放在内存中的,在磁盘上每8个怕个将小号1byte的内存
vm-pages 134217728 -
设置访问swap文件的线程数,最好不要超过机制的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟,默认值为4
vm-max-threads 4 -
设置在向客户端应答时,是否把较小的包并为一个bao发送,默认为开启
glueoutputbuf yes -
最孤独不过在超过一定的数量或者最大的元素超过某一临界值,采用一种特殊的哈希算法
hash-max-zipmap-entries 64
hash-max-zipmap-value 512 -
指定是否激活重置哈希,默认开启
activerehashing yes -
指定包含其他的配置文件,可以在同一主机上多个redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件
include /path/to/local.conf
参考连接:点击查看redis.conf原文件