Redis 配置redis.conf 解读

# Redis 配置文件
#
# Redis 必须启动文件路径为第一个参数
# ./redis-server /path/to/redis.conf


# 当需要申请资源的时候,可以使用 1k 5GB 4M 或者其他格式
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# units are case insensitive so 1GB 1Gb 1gB are all the same.

################################## INCLUDES  ###################################

# 将多个实例的redis 公共的配置文件抽出来 单独个别配置文件自己维护
# include /path/to/local.conf
# include /path/to/other.conf

################################ GENERAL 全局配置  #####################################

# 需要在后台守护进程 使用daemonize yes 默认为no
# 当redis 在后台运行的时候 redis 会在/var/run/redis.pid 写入pid 文件
daemonize no

pidfile /var/run/redis.pid


# redis 默认连接端口为6379
# 如设置为0 Redis 不会监听在任何TCP 连接上
port 6379


# 绑定单机唯一适配器 默认使用所有网络适配器
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1


# 绑定单机唯一适配器 默认使用所有网络适配器
# unixsocket /tmp/redis.sock
# unixsocketperm 700

# redis 在连接n 秒之后断开连接 
# 0 表示不会主动断开连接
timeout 0

# TCP keepalive.
#在linux上,每个一段时间发送 SO_KEEPALIVE ACK的空包;推荐值为60s;  这样做的两点理由: 
# 1、阻止由于某个command执行过长达到timeout超时时间而被断开连接;  
# 2、提高连接错误的检测 
tcp-keepalive 0

# Redis 日志级别 level.
# debug (大量日志输出 主要用于测试)
# verbose (相当于debug 更多显示重要日志输出)
# notice (生成环境配置)
# warning (只有非常重要 错误日志被输出)
loglevel notice

#日志文件记录位置, 如果采用daemonize 守护进程的模式,且参数值为stdout,那
# logs 将会输出到 /dev/null
logfile ""

# 将日志输出到syslog 
# syslog-enabled no

# Specify the syslog identity.
# syslog-ident redis

# 日志级别必须在 LOCAL0-LOCAL7.
# syslog-facility local0

# 设置数据库连接数 默认是0, you can select
# dbid 值范围 0 and 'databases'-1
databases 16



################################ SNAPSHOTTING  ################################
#
# Save the DB on disk:
#
#   save  
#
#   将在多少秒之后刷DB数据到Disk
#    
#   
#   900 秒 (15 min)之后 至少 1 个key 发生变更
#   300 秒 (5 min)之后  至少 10 keys 发生变更
#   60 秒之后  至少 10000 keys 发生变更
#
#   Note: you can disable saving completely by commenting out all "save" lines.
#
#   不刷Dick的话,直接  save "" 就可以
#
#   save ""

save 900 1
save 300 10
save 60 10000

# 存贮数据到Dick rdb 是否压缩数据 默认yes
rdbcompression yes

# 跳过代码检查
rdbchecksum yes

# 默认db 名称
dbfilename dump.rdb

# 工作区
#
# 数据库镜像备份的文件放置的路径。
# 这里的路径跟文件名要分开配置是因为redis在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,
# 再把该该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中。
# 
# AOF文件也会存放在这个目录下面
# 
# 注意这里必须制定一个目录而不是文件
dir ./

################################# 主从复制#################################

# 主从Redis 复制 设置该数据库为其他数据库的从库
#
# 1) Redis 复制是的异步的 但可以配置当连接不上最近的slave库时master停止接受写入操作
# 2)当master库失去小量的连接 slave库可以暂时充当master库角色  同时可以配置复制backlog 的大小
# 3) 复制的过程是原子性 需要人工干预 slavez自动尝试着连接master并且同步数据
# slaveof  

#  master库可以使用requirepass 指定密码保护
# masterauth 

# 当slave 库连接不上master库或者现在一直复制中 slave库有两种处理方式:
# 1) 设置 slave-serve-stale-data 为yes slave库一直重复发起连接请求 
# 2) 设置 slave-serve-stale-data 为no slave 会一直返回INFO and SLAVEOF “SYNC with master in progress”

slave-serve-stale-data yes

# 可以配置slave 库是否接入读写操作, 不支持写slave库 更容易存储短暂数据;但如果往slave库写数据容易出现一些问题,因为从 Redis 2.6 之后 slaves库默认read-only
# 注:read-only slave库不要直接在网上暴露给不可信的客户端

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100


################################## SECURITY ###################################

# 设置客户端连接后进行任何其他指定前需要使用的密码。
# 警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解
#
# requirepass foobared

# 命令重命名.
#
# 在一个共享环境下可以重命名相对危险的命令。比如把CONFIG重名为一个不容易猜测的字符。
#
# 举例:
#
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#
# 如果想删除一个命令,直接把它重命名为一个空字符""即可,如下:
#
# rename-command CONFIG ""

################################### LIMITS ####################################
# 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,
# 如果设置 maxclients 0,表示不作限制。
# 当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息
#
# maxclients 128

# 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key
# Redis同时也会移除空的list对象
#
# 当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作
# 
# 注意:Redis新的vm机制,会把Key存放内存,Value会存放在swap区
#
# maxmemory的设置比较适合于把redis当作于类似memcached的缓存来使用,而不适合当做一个真实的DB。
# 当把Redis当做一个真实的数据库使用的时候,内存使用将是一个很大的开销
# maxmemory 

# 当内存达到最大值的时候Redis会选择删除哪些数据?有五种方式可供选择
# 
# volatile-lru -> 利用LRU算法移除设置过过期时间的key (LRU:最近使用 Least Recently Used )
# allkeys-lru -> 利用LRU算法移除任何key
# volatile-random -> 移除设置过过期时间的随机key
# allkeys->random -> remove a random key, any key
# volatile-ttl -> 移除即将过期的key(minor TTL)
# noeviction -> 不移除任何可以,只是返回一个写错误
# 
# 注意:对于上面的策略,如果没有合适的key可以移除,当写的时候Redis会返回一个错误
#
#       写命令包括: set setnx setex append
#       incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
#       sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
#       zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
#       getset mset msetnx exec sort
#
# 默认是:
#
# maxmemory-policy volatile-lru

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

############################## APPEND ONLY MODE ###############################

默认情况下,redis会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁,如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失。
# 所以redis提供了另外一种更加高效的数据库备份及灾难恢复方式。
# 开启append only模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态。
# 但是这样会造成appendonly.aof文件过大,所以redis还支持了BGREWRITEAOF指令,对appendonly.aof 进行重新整理。
# 你可以同时开启asynchronous dumps 和 AOF

appendonly no

# AOF文件名称 (默认: "appendonly.aof")
# appendfilename appendonly.aof


# Redis支持三种同步AOF文件的策略:
#
# no: 不进行同步,系统去操作 . Faster.
# always: always表示每次有写操作都进行同步. Slow, Safest.
# everysec: 表示对写操作进行累积,每秒同步一次. Compromise.
#
# 默认是"everysec",按照速度和安全折中这是最好的。
# 如果想让Redis能更高效的运行,你也可以设置为"no",让操作系统决定什么时候去执行
# 或者相反想让数据更安全你也可以设置为"always"
#
# 如果不确定就用 "everysec".

# appendfsync always
appendfsync everysec
# appendfsync no

# AOF策略设置为always或者everysec时,后台处理进程(后台保存或者AOF日志重写)会执行大量的I/O操作
# 在某些Linux配置中会阻止过长的fsync()请求。注意现在没有任何修复,即使fsync在另外一个线程进行处理
#
# 为了减缓这个问题,可以设置下面这个参数no-appendfsync-on-rewrite
#
# This means that while another child is saving the durability of Redis is
# the same as "appendfsync none", that in pratical terms means that it is
# possible to lost up to 30 seconds of log in the worst scenario (with the
# default Linux settings).
# 
# If you have latency problems turn this to "yes". Otherwise leave it as
# "no" that is the safest pick from the point of view of durability.
no-appendfsync-on-rewrite no

# Automatic rewrite of the append only file.
# AOF 自动重写
# 当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 
# 
# 它是这样工作的:Redis会记住上次进行些日志后文件的大小(如果从开机以来还没进行过重写,那日子大小在开机的时候确定)
#
# 基础大小会同现在的大小进行比较。如果现在的大小比基础大小大制定的百分比,重写功能将启动
# 同时需要指定一个最小大小用于AOF重写,这个用于阻止即使文件很小但是增长幅度很大也去重写AOF文件的情况
# 设置 percentage 为0就关闭这个特性


auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb 

参考:
最全的redis.conf解析
百度百科

你可能感兴趣的:(PHP,系统运维)