共计 11398 个字符,预计需要花费 29 分钟才能阅读完成。
Redis3.0.1 配置文件说明
# 配置文件模块介绍:
# INCLUDES 包含配置文件设置
# GENERAL 主要配置
# SNAPSHOTTING 快照设置
# REPLICATION 复制设置
# SECURITY 安全设置
# LIMITS 限制设置
# APPEND ONLY MODE AOF 设置
# LUA SCRIPTING LUA 脚本
# REDIS CLUSTER Redis 集群设置
# SLOW LOG 慢日志设置
# LATENCY MONITOR 延迟监视器
# EVENT NOTIFICATION 事件通知
# ADVANCED CONFIG 高级配置
# Redis configuration file example
# Note on units: when memory size is needed, it is possible to specify
# it in the usual form of 1k 5GB 4M and so forth:
#
# 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 服务器有一个统一的模板,
# 但是需要对每一个 redis 服务器进行少许设置的时候非常有用, 包含其他配置文件还是挺明智地
#
# 注意: 包含的配置不能被管理者和 redis 哨兵重写,redis 通常使用最后的配置来处理, 所以你
# 最好将包含文件放在最开始避免在运行时覆盖
#
# 相反, 如果你有兴趣去覆盖配置选项, 最好在最后一行使用 include.
#
# include /path/to/local.conf
# include /path/to/other.conf
################################ GENERAL #####################################
# redis 启动默认是非后台运行的,yes 是后台运行,redis 将 pid 写在 /var/run/redis.pid, 如果你选择后台运行的话
# (注)redis.pid 其实很简单, 比如 3019
daemonize yes
# 后台运行的话,redis 默认把 pid 写入 /var/run/redis.pid, 你可以指定一个用户 pid 文件地址.
pidfile /var/run/redis.pid
# 接收连接端口, 默认是 6379, 如果端口是 0 将不监听 tcp 的套接字.
port 6379
# TCP listen() backlog.
# 此参数确定了 TCP 连接中已完成队列 (完成三次握手之后) 的长度,
# 当然此值必须不大于 Linux 系统定义的 /proc/sys/net/core/somaxconn 值,默认是 511,
# 而 Linux 的默认参数值是 128。当系统并发量大并且客户端速度缓慢的时候,
# 可以将这二个参数一起参考设定。该内核参数默认值一般是 128,对于负载很大的服务程序来说大大的不够。
# 一般会将它修改为 2048 或者更大。在 /etc/sysctl.conf 中添加:net.core.somaxconn =2048,
# 然后在终端中执行 sysctl -p
#
tcp-backlog 511
# 默认 Redis 会监听所有的网络连接, 可能只是监听一个或几个接口, 可以使用 bind 配置,
# bind 后面可以跟一个或多个 IP 地址, 中间用空格隔开
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
# Specify the path for the Unix socket that will be used to listen for
# incoming connections. There is no default, so Redis will not listen
# on a unix socket when not specified.
# 指定 unix 套接字路径监听进来的连接, 这不是默认的, 所以 Redis 不监听不指定的 unix socket
#
# unixsocket /tmp/redis.sock
# unixsocketperm 700
# Close the connection after a client is idle for N seconds (0 to disable)
# 关闭连接如果一个客户端空闲了 n 秒,0 是关闭超时
timeout 0
# 如果设置不为 0,就使用配置 tcp 的 SO_KEEPALIVE 值,
# 使用 keepalive 有两个好处: 检测挂掉的对端。
# 降低中间设备出问题而导致网络看似连接却已经与对端端口的问题。
# 在 Linux 内核中,设置了 keepalive,redis 会定时给对端发送 ack。检测到对端关闭需要两倍的设置值。
tcp-keepalive 0
# 指定服务器日志级别 (debug,verbose,notice,warning)
loglevel notice
# Specify the log file name. Also the empty string can be used to force
# Redis to log on the standard output. Note that if you use standard
# output for logging but daemonize, logs will be sent to /dev/null
# 指定日志文件名字, 空的字符串用来强制 redis 的日志标准输出, 如果你为后台启动使用标准的日志输出,
# 将发送到 /dev/null
logfile “”
# 设置系统日志有效的, 设置 syslog-enabled 为 yes, 然后选择性的更新其他系统日志参数以使用你的需要
# syslog-enabled no
# 指定系统日志身份
# syslog-ident redis
# 指定系统日志设施, 必须使用 LOCAL0-LOCAL7 的值
# syslog-facility local0
# 设置数据库的数量, 默认的数据库是 0, 你可以选择一个不同的数据库, 使用 select 关键字选择数据库,
# 选择的范围是 0~(16-1)
databases 16
################################ SNAPSHOTTING ################################
#
# save900 1 #900 秒有一个 key 变化,就做一个保存
# save300 10 #300 秒有 10 个 key 变化,就做一个保存
# save60 10000 #60 秒有 10000 个 key 变化就做一个保存
# 也可以删除所有的保存点, 替换成一个空的字符串参数
#
# save “”
save 900 1
save 300 10
save 60 10000
# 发生错误的时候停止复制 yes
stop-writes-on-bgsave-error yes
# rdb 是压缩方式
rdbcompression yes
# 是否校验 rdb 文件
rdbchecksum yes
# The filename where to dump the DB
# 快照文件的名称
dbfilename dump.rdb
# 数据目录, 数据库的写入会写在这个目录,rdb,aof 文件也会写在这个目录
dir ./
################################# REPLICATION #################################
# 设置某一个主库的从库
# slaveof <masterip> <masterport>
# 主机的密码
# masterauth <master-password>
# 表示当主机失去连接或者复制正在进行,yes, 会继续响应客户端请求,no, 除去 info 和 slaveof 命令,
# 其他会报错 ”SYNC with master in progress”
slave-serve-stale-data yes
# 从机设置为只读模式
slave-read-only yes
# 目前 redis 复制提供两种方式,disk 和 socket。如果新的 slave 连上来或者重连的 slave 无法部分同步,就会执行全量同步,
# master 会生成 rdb 文件。有 2 种方式:disk 方式是 master 创建一个新的进程把 rdb 文件保存到磁盘,再把磁盘上的 rdb 文件传递给 slave。
# socket 是 master 创建一个新的进程,直接把 rdb 文件以 socket 的方式发给 slave。disk 方式的时候,当一个 rdb 保存的过程中,
# 多个 slave 都能共享这个 rdb 文件。socket 的方式就的一个个 slave 顺序复制。在磁盘速度缓慢,网速快的情况下推荐用 socket 方式
repl-diskless-sync no
# diskless 复制的延迟时间,防止设置为 0。一旦复制开始,节点不会再接收新 slave 的复制请求直到下一个 rdb 传输。
# 所以最好等待一段时间,等更多的 slave 连上来
repl-diskless-sync-delay 5
# 每 10 秒 ping 下主机
# repl-ping-slave-period 10
# 复制超时时间
# repl-timeout 60
# 是否禁止复制 tcp 链接的 tcp nodelay[gs1] [gs2] 参数,可传递 yes 或者 no。默认是 no,
# 即使用 tcp nodelay。如果 master 设置了 yes 来禁止 tcp nodelay 设置,在把数据复制给 slave 的时候,
# 会减少包的数量和更小的网络带宽。但是这也可能带来数据的延迟。默认我们推荐更小的延迟,
# 但是在数据量传输很大的场景下,建议选择 yes
repl-disable-tcp-nodelay no
# 复制后台日志大小
# repl-backlog-size 1mb
# 复制后台日志端口
# repl-backlog-ttl 3600
# 当 master 不可用,Sentinel 会根据 slave 的优先级选举一个 master。最低的优先级的 slave,当选 master。
# 而配置成 0,永远不会被选举
slave-priority 100
# 如果少于 N 个 slave 连接,且延迟时间 <=M 秒,则 master 可配置停止接受写操作。
# 例如需要至少 3 个 slave 连接,且延迟 <=10 秒的配置:
# min-slaves-to-write 3
# min-slaves-max-lag 10
################################## 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 10000
# 指定 Redis ���大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会按照清除策略尝试清除已到期的 Key
# 如果 Redis 依照策略清除后无法提供足够空间,或者策略设置为”noeviction”,则使用更多空间的命令将会报错,例如 SET, LPUSH 等。但仍然可以进行读取操作
# 注意:Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区
# 该选项对 LRU 策略很有用。
# maxmemory 的设置比较适合于把 redis 当作于类似 memcached 的缓存来使用,而不适合当做一个真实的 DB。
# 当把 Redis 当做一个真实的数据库使用的时候,内存使用将是一个很大的开销
# maxmemory <bytes>
# 当内存达到最大值的时候 Redis 会选择删除哪些数据?有五种方式可供选择
# volatile-lru -> 利用 LRU 算法移除设置过过期时间的 key (LRU: 最近使用 Least RecentlyUsed)
# allkeys-lru -> 利用 LRU 算法移除任何 key
# volatile-random -> 移除设置过过期时间的随机 key
# allkeys->random -> remove a randomkey, any key
# volatile-ttl -> 移除即将过期的 key(minor TTL)
# noeviction -> 不移除任何可以,只是返回一个写错误
# 注意:对于上面的策略,如果没有合适的 key 可以移除,当写的时候 Redis 会返回一个错误
# 默认是 : volatile-lru
# maxmemory-policy noeviction
# LRU 和 minimal TTL 算法都不是精准的算法,但是相对精确的算法 (为了节省内存),随意你可以选择样本大小进行检测。
# Redis 默认的灰选择 3 个样本进行检测,你可以通过 maxmemory-samples 进行设置
# maxmemory-samples 5
############################## APPEND ONLY MODE ###############################
# 默认 redis 使用的是 rdb 方式持久化,这种方式在许多应用中已经足够用了。
# 但是 redis 如果中途宕机,会导致可能有几分钟的数据丢失,根据 save 来策略进行持久化,
# Append Only File 是另一种持久化方式,可以提供更好的持久化特性。
# Redis 会把每次写入的数据在接收后都写入 appendonly.aof 文件,
# 每次启动时 Redis 都会先把这个文件的数据读入内存里,先忽略 RDB 文件
appendonly no
# sof 文件名
appendfilename “appendonly.aof”
# aof 复制触发时机, 默认是每秒一次
# appendfsync always
appendfsync everysec
# appendfsync no
# 在 aof 重写或者写入 rdb 文件的时候,会执行大量 IO,此时对于 everysec 和 always 的 aof 模式来说,
# 执行 fsync 会造成阻塞过长时间,no-appendfsync-on-rewrite 字段设置为默认设置为 no。
# 如果对延迟要求很高的应用,这个字段可以设置为 yes,
# 否则还是设置为 no,这样对持久化特性来说这是更安全的选择。设置为 yes 表示 rewrite 期间对新写操作不 fsync,
# 暂时存在内存中, 等 rewrite 完成后再写入,默认为 no,建议 yes。Linux 的默认 fsync 策略是 30 秒。可能丢失 30 秒数据
no-appendfsync-on-rewrite no
# aof 自动重写配置。当目前 aof 文件大小超过上一次重写的 aof 文件大小的百分之多少进行重写,
# 即当 aof 文件增长到一定大小的时候 Redis 能够调用 bgrewriteaof 对日志文件进行重写。
# 当前 AOF 文件大小是上次日志重写得到 AOF 文件大小的二倍(设置为 100)时,自动启动新的日志重写过程。
auto-aof-rewrite-percentage 100
# 设置允许重写的最小 aof 文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写
auto-aof-rewrite-min-size 64mb
# aof 文件可能在尾部是不完整的,当 redis 启动的时候,aof 文件的数据被载入内存。
# 重启可能发生在 redis 所在的主机操作系统宕机后,尤其在 ext4 文件系统没有加上 data=ordered 选项
#(redis 宕机或者异常终止不会造成尾部不完整现象。)出现这种现象,可以选择让 redis 退出,
# 或者导入尽可能多的数据。如果选择的是 yes,当截断的 aof 文件被导入的时候,会自动发布一个 log 给客户端然后 load。
# 如果是 no,用户必须手动 redis-check-aof 修复 AOF 文件才可以
aof-load-truncated yes
################################ LUA SCRIPTING ###############################
# 如果达到最大时间限制(毫秒),redis 会记个 log,然后返回 error。当一个脚本超过了最大时限。
# 只有 SCRIPT KILL 和 SHUTDOWN NOSAVE 可以用。第一个可以杀没有调 write 命令的东西。要是已经调用了 write,
# 只能用第二个命令杀
lua-time-limit 5000
################################ REDIS CLUSTER ###############################
# 是否开启集群
# cluster-enabled yes
# 集群配置文件 node-6379.conf
# cluster-config-file nodes-6379.conf
# 集群节点超时时间
# cluster-node-timeout 15000
# 集群从机有效因子
# cluster-slave-validity-factor 10
# 集群迁移栏栅
# cluster-migration-barrier 1
# 集群是否需要全覆盖
# cluster-require-full-coverage yes
################################## SLOW LOG ###################################
# slog log 是用来记录 redis 运行中执行比较慢的命令耗时。当命令的执行超过了指定时间,就记录在 slow log 中,slog log 保存在内存中,所以没有 IO 操作。
# 执行时间比 slowlog-log-slower-than 大的请求记录到 slowlog 里面,单位是微秒,所以 1000000 就是 1 秒。注意,负数时间会禁用慢查询日志,而 0 则会强制记录所有命令
slowlog-log-slower-than 10000
# 慢查询日志长度。当一个新的命令被写进日志的时候,最老的那个记录会被删掉。这个长度没有限制。只要有足够的内存就行。你可以通过 SLOWLOG RESET 来释放内存。
slowlog-max-len 128
################################ LATENCY MONITOR ##############################
# 延迟监控功能是用来监控 redis 中执行比较缓慢的一些操作,用 LATENCY 打印 redis 实例在跑命令时的耗时图表。
# 只记录大于等于下边设置的值的操作。0 的话,就是关闭监视。默认延迟监控功能是关闭的,
# 如果你需要打开,也可以通过 CONFIGSET 命令动态设置。
latency-monitor-threshold 0
############################# EVENT NOTIFICATION ##############################
# #键空间通知使得客户端可以通过订阅频道或模式,来接收那些以某种方式改动了 Redis 数据集的事件。因为开启键空间通知功能需要消耗一些 CPU,
# 所以在默认配置下,该功能处于关闭状态。
# notify-keyspace-events 的参数可以是以下字符的任意组合,它指定了服务器该发送哪些类型的通知:
# #K 键空间通知,所有通知以 __keyspace@__ 为前缀
# #E 键事件通知,所有通知以 __keyevent@__ 为前缀
# #g DEL、EXPIRE、RENAME 等类型无关的通用命令的通知
# #$ 字符串命令的通知
# #l 列表命令的通知
# #s 集合命令的通知
# #h 哈希命令的通知
# #z 有序集合命令的通知
# #x 过期事件:每当有过期键被删除时发送
# #e 驱逐(evict) 事件:每当有键因为 maxmemory 政策而被删除时发送
# #A 参数 g$lshzxe 的别名
# 输入的参数中至少要有一个 K 或者 E,否则的话,不管其余的参数是什么,都不会有任何 通知被分发。详细使用可以参考 http://redis.io/topics/notifications
notify-keyspace-events “”
############################### ADVANCED CONFIG ###############################
# 数据量小于等于 hash-max-ziplist-entries 的用 ziplist,大于 hash-max-ziplist-entries 用 hash
hash-max-ziplist-entries 512
# value 大小小于等于 hash-max-ziplist-value 的用 ziplist,大于 hash-max-ziplist-value 用 hash。
hash-max-ziplist-value 64
# 和 Hash 一样,多个小的 list 以特定的方式编码来节省空间。
# list 数据类型节点值大小小于多少字节会采用紧凑存储格式。
list-max-ziplist-entries 512
list-max-ziplist-value 64
# 数据量小于等于 set-max-intset-entries 用 iniset,大于 set-max-intset-entries 用 set。
set-max-intset-entries 512
# 数据量小于等于 zset-max-ziplist-entries 用 ziplist,大于 zset-max-ziplist-entries 用 zset
zset-max-ziplist-entries 128
# value 大小小于等于 zset-max-ziplist-value 用 ziplist,大于 zset-max-ziplist-value 用 zset
zset-max-ziplist-value 64
# value 大小小于等于 hll-sparse-max-bytes 使用稀疏数据结构(sparse),
# 大于 hll-sparse-max-bytes 使用稠密的数据结构(dense)。一个比 16000 大的 value 是几乎没用的,
# 建议的 value 大概为 3000。如果对 CPU 要求不高,对空间要求较高的,建议设置到 10000 左右。
hll-sparse-max-bytes 3000
# #Redis 将在每 100 毫秒时使用 1 毫秒的 CPU 时间来对 redis 的 hash 表进行重新 hash,
# 可以降低内存的使用。当你的使用场景中,有非常严格的实时性需要,
# 不能够接受 Redis 时不时的对请求有 2 毫秒的延迟的话,把这项配置为 no。
# 如果没有这么严格的实时性要求,可以设置为 yes,以便能够尽可能快的释放内存
activerehashing yes
# 对客户端输出缓冲进行限制可以强迫那些不从服务器读取数据的客户端断开连接,用来强制关闭传输缓慢的客户端。
# 对于 normalclient,第一个 0 表示取消 hard limit,第二个 0 和第三个 0 表示取消 soft limit,normal client 默认取消限制,
# 因为如果没有寻问,他们是不会接收数据的。
client-output-buffer-limit normal 0 0 0
# 对于 slaveclient 和 MONITER client,如果 client-output-buffer 一旦超过 256mb,又或者超过 64mb 持续 60 秒,那么服务器就会立即断开客户端连接。
client-output-buffer-limit slave 256mb 64mb 60
# 对于 pubsub client,如果 client-output-buffer 一旦超过 32mb,又或者超过 8mb 持续 60 秒,那么服务器就会立即断开客户端连接。
client-output-buffer-limit pubsub 32mb 8mb 60
# redis 执行任务的频率为 1s 除以 hz。
hz 10
# 在 aof 重写的时候,如果打开了 aof-rewrite-incremental-fsync 开关,系统会每 32MB 执行一次 fsync。
# 这对于把文件写入磁盘是有帮助的,可以避免过大的延迟峰值
aof-rewrite-incremental-fsync yes
下面关于 Redis 的文章您也可能喜欢,不妨参考下:
Ubuntu 14.04 下 Redis 安装及简单测试 http://www.linuxidc.com/Linux/2014-05/101544.htm
Redis 主从复制基本配置 http://www.linuxidc.com/Linux/2015-03/115610.htm
CentOS 7 下 Redis 的安装与配置 http://www.linuxidc.com/Linux/2017-02/140363.htm
Ubuntu 14.04 安装 Redis 与简单配置 http://www.linuxidc.com/Linux/2017-01/139075.htm
Ubuntu 16.04 环境中安装 PHP7.0 Redis 扩展 http://www.linuxidc.com/Linux/2016-09/135631.htm
CentOS 7.0 安装 Redis 3.2.1 详细过程和使用常见问题 http://www.linuxidc.com/Linux/2016-09/135071.htm
Ubuntu 16.04 环境中安装 PHP7.0 Redis 扩展 http://www.linuxidc.com/Linux/2016-09/135631.htm
Ubuntu 15.10 下 Redis 集群部署文档 http://www.linuxidc.com/Linux/2016-06/132340.htm
Redis 实战 中文 PDF http://www.linuxidc.com/Linux/2016-04/129932.htm
Redis 热迁移实战总结 http://www.linuxidc.com/Linux/2017-02/141083.htm
Redis 的详细介绍:请点这里
Redis 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141370.htm