redis学习笔记--配置文件

Units单位

# Redis configuration file example.
#
# Note that in order to read the configuration file, Redis must be
# started with the file path as first argument:
#
# ./redis-server /path/to/redis.conf
 
# 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.
配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit
对大小写不敏感

INCLUDES包含

################################## INCLUDES ###################################
 
# Include one or more other config files here.  This is useful if you
# have a standard template that goes to all Redis servers but also need
# to customize a few per-server settings.  Include files can include
# other files, so use this wisely.
#
# Notice option "include" won't be rewritten by command "CONFIG REWRITE"
# from admin or Redis Sentinel. Since Redis always uses the last processed
# line as value of a configuration directive, you'd better put includes
# at the beginning of this file to avoid overwriting config change at runtime.
#
# If instead you are interested in using includes to override configuration
# options, it is better to use include as the last line.
#
# include /path/to/local.conf
# include /path/to/other.conf
可以通过includes包含,redis.conf可以作为总闸,包含其他

NETWORK网络

配置项说明
bind 127.0.0.1绑定的主机地址
port指定 Redis 监听端口,默认端口为 6379
protected-mode是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。
tcp-backlog设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列。在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。注意Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_max_syn_backlog两个值来达到想要的效果
unixsocket
unixsocketperm
指定redis监听的unix socket路径,默认不启用,unixsocketperm指定文件的权限
timeout当客户端闲置多长秒后关闭连接,如果指定为 0 ,表示关闭该功能
tcp-keepalive单位为秒,如果设置为0,则不会进行Keepalive检测,建议设置成60

GENERAL通用

配置项说明
daemonizeRedis 默认不是以守护进程的方式运行,可以通过该配置项修改,使用 yes 启用守护进程
supervised可以通过upstart和systemd管理Redis守护进程
- supervised no :没有监督互动
- supervised upstart :通过将Redis置于SIGSTOP模式来启动信号
- supervised systemd :signal systemd将READY = 1写入$ NOTIFY_SOCKET
- supervised auto :检测upstart或systemd方法基于 UPSTART_JOB或NOTIFY_SOCKET环境变量
pidfile当 Redis 以守护进程方式运行时,Redis 默认会把 pid 写入 /var/run/redis.pid 文件,可以通过 pidfile 指定
loglevel指定日志记录级别,Redis 总共支持四个级别:debug、verbose、notice、warning,默认为 notice
logfile日志记录方式,默认为标准输出,如果配置 Redis 为守护进程方式运行,而这里又配置为日志记录方
式为标准输出,则日志将会发送给 /dev/null
syslog-enabled是否把日志输出到syslog中
syslog-ident指定syslog里的日志标志
syslog-facility指定syslog设备,值可以是USER或LOCAL0-LOCAL7
databases设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id

SNAPSHOTTING快照

配置项说明
save指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合。
如果想禁用RDB持久化的策略,只要不设置任何save指令,或者给save传入一个空字符串参数也可以save “”
stop-writes-on-bgsave-error默认是yes,如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制
rdbcompression指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbchecksum在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
dbfilename指定本地数据库文件名,默认值为 dump.rdb
dir指定本地数据库存放目录

REPLICATION复制

配置项说明
slaveof <masterip> <masterport>设置当本机为 slave 服务时,设置 master 服务的 IP 地址及端口,在 Redis 启动时,
它会自动从 master 进行数据同步
masterauth <master-password>当 master 服务设置了密码保护时,slav 服务连接 master 的密码
slave-serve-stale-data参数设置成yes,主从复制中,从服务器可以响应客户端请求;
参数设置成no,主从复制中,从服务器将阻塞所有请求,有客户端请求时返回“SYNC with master in progress”
slave-read-only设置slave是否是只读
repl-diskless-sync主从数据复制是否使用无硬盘复制功能
repl-diskless-sync-delaydiskless复制的延迟时间,防止设置为0。一旦复制开始,节点不会再接收新slave的复制
请求直到下一个rdb传输。所以最好等待一段时间,等更多的slave连上来
repl-ping-slave-periodslave根据指定的时间间隔向服务器发送ping请求(心跳包)。时间间隔可以通过
repl_ping_slave_period 来设置,默认10秒。redis集群里面会用到这个配置
repl-timeout复制连接超时时间。master和slave都有超时时间的设置。master检测到slave上次发送的时间
超过repl-timeout,即认为slave离线,清除该slave信息。slave检测到上次和master交互的时
间超过repl-timeout,则认为master离线。需要注意的是repl-timeout需要设置一个比repl-ping-slave-period
更大的值,不然会经常检测到超时。
repl-disable-tcp-nodelay指定向slave同步数据时,是否禁用socket的NO_DELAY选 项。若配置为“yes”,则禁用NO_DELAY,
则TCP协议栈会合并小包统一发送,这样可以减少主从节点间的包数量并节省带宽,但会增加数据同
步到 slave的时间。若配置为“no”,表明启用NO_DELAY,则TCP协议栈不会延迟小包的发送时机,
这样数据同步的延时会减少,但需要更大的带宽。 通常情况下,应该配置为no以降低同步延时,
但在主从节点间网络负载已经很高的情况下,可以配置为yes
repl-backlog-size设置主从复制backlog容量大小。这个 backlog 是一个用来在 slave 被断开连接时存放 slave 数据的
buffer,所以当一个 slave 想要重新连接,通常不希望全部重新同步,只是部分同步就够了,仅仅传
递 slave 在断开连接时丢失的这部分数据。这个值越大,salve 可以断开连接的时间就越长。
repl-backlog-ttl配置当master和slave失去联系多少秒之后,清空backlog释放空间。当配置成0时,表示永远不清空。
slave-priority当 master 不能正常工作的时候,Redis Sentinel 会从 slaves 中选出一个新的 master,这个值越小,
就越会被优先选中,但是如果是 0 , 那是意味着这个 slave 不可能被选中。 默认优先级为 100
min-slaves-to-writeredis提供了可以让master停止写入的方式,如果配置了min-slaves-to-write,健康的slave的个数小于N,
mater就禁止写入。master最少得有多少个健康的slave存活才能执行写命令。这个配置虽然不能保证N个
slave都一定能接收到master的写操作,但是能避免没有足够健康的slave的时候,master不能写入来避免
数据丢失。设置为0是关闭该功能。
min-slaves-max-lag延迟小于min-slaves-max-lag秒的slave才认为是健康的slave。
slave-announce-ip
slave-announce-port
当使用 Docker 或其他类型的容器使用端口转发或网络地址转换(NAT)时,ROLE 命令和 INFO 输出
的复制部分在发布到 master 实例中时,将显示 slave 具有的用于连接到 master 的 IP 地址,而在
使用 NAT 的环境中,和 slave 实例的逻辑地址(客户机用来连接 slave 的地址)相比较可能会不同。

使用的两个配置指令强制一个 slave 向 master 通告一对任意的 IP 和端口。

SECURITY安全

配置项说明
requirepass foobared设置 Redis 连接密码,如果配置了连接密码,
客户端在连接 Redis 时需要通过 AUTH <password> 命令提供密码,默认关闭
rename-command CONFIG将命令重命名。为了安全考虑,可以将某些重要的、危险的命令重命名。当你
把某个命令重命名成空字符串的时候就等于取消了这个命令

LIMITS限制

配置项说明
maxclients设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端。当你无法设置
进程文件句柄限制时,redis会设置为当前的文件句柄限制值减去32,因为redis会为自身内部
处理逻辑留一些句柄出来。如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连
接请求方发出“max number of clients reached”以作回应。
maxmemory设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则
可以通过maxmemory-policy来指定。如果redis无法根据移除规则来移除内存中的数据,或者设
置了“不允许移除”,那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。
但是对于无内存申请的指令,仍然会正常响应,比如GET等。如果你的redis是主redis(说明你的redis有从redis),
那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的
情况下,才不用考虑这个因素
maxmemory-policy- volatile-lru:使用LRU算法移除key,只对设置了过期时间的键
- allkeys-lru:使用LRU算法移除key
- volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键
- allkeys-random:移除随机的key
- volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key
- noeviction:不进行移除。针对写操作,只是返回错误信息
maxmemory-samples设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置
样本的大小,redis默认会检查这么多个key并选择其中LRU的那个

APPEND ONLY MODE追加

配置项说明
appendonly指定是否在每次更新操作后进行日志记录,Redis 在默认情况下是异步的把数据写入磁盘,
如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis 本身同步数据文件是
按上面 save 条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为 no,yes即打开AOF持久化
appendfilename指定更新日志文件名,默认为 appendonly.aof
appendfsync指定更新日志条件,共有 3 个可选值:
- always:同步持久化 每次发生数据变更会被立即记录到磁盘 性能较差但数据完整性比较好
- everysec:默认推荐,异步操作,每秒记录 如果一秒内宕机,有数据丢失
-no:表示等操作系统进行数据缓存同步到磁盘
no-appendfsync-on-rewrite重写时是否可以运用appendfsync,用默认no即可,保证数据安全性。
auto-aof-rewrite-percentageaof自动重写配置,当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,
即当aof文件增长到一定大小的时候,Redis能够调用bgrewriteaof对日志文件进行重写。 当前
AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程。
auto-aof-rewrite-min-size当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 。当AOF
文件大小大于该配置项时自动开启重写。
aof-load-truncatedaof文件可能在尾部是不完整的,当redis启动的时候,aof文件的数据被载入内存。重启可能发生在
redis所在的主机操作系统宕机后,尤其在ext4文件系统没有加上data=ordered选项(redis宕机或者
异常终止不会造成尾部不完整现象。)出现这种现象,可以选择让redis退出,或者导入尽可能多的
数据。如果选择的是yes,当截断的aof文件被导入的时候,会自动发布一个log给客户端然后load。
如果是no,用户必须手动redis-check-aof修复AOF文件才可以。

LUA SCRIPTING(LUA脚本)

配置项说明
lua-time-limit一个Lua脚本最长的执行时间,单位为毫秒,如果为0或负数表示无限执行时间,默认为5000。

REDIS CLUSTER集群

配置项说明
cluster-enabled启动集群, 设置为yes。只有设置为yes才能算的第一个集群节点
cluster-config-file指定集群配置文件名字,这个文件自动生成,自动维护
cluster-node-timeout连接超时时间
cluster-slave-validity-factor在进行故障转移的时候,全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了,
导致数据过于陈旧,这样的slave不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长。
判断方法是:
比较slave断开连接的时间和(node-timeout * slave-validity-factor) + repl-ping-slave-period, 如果节点超时
时间为三十秒, 并且slave-validity-factor为10,并且假设默认的回复slave时间为10秒,则如果从服务器无
法与主服务器对话超过310秒,则从服务器不会尝试进行故障转移。
cluster-migration-barriermaster的slave数量大于该值,slave才能迁移到其他孤立master上,
如这个参数若被设为2, 那么只有当一个主节点拥有2 个可工作的从节点时,它的一个从节点会尝试迁移。
cluster-require-full-coverage默认情况下,集群全部的散列槽有节点负责,集群状态才为ok,才能提供服务。 设置为no,
可以在散列槽没有全部分配的时候提供服务。不建议打开该配置,这样会造成分区的时候,
小分区的master一直在接受写请求,而造成很长时间数据不一致

SLOW LOG慢日志

配置项说明
slowlog-max-lenslog log是用来记录redis运行中执行比较慢的命令耗时。 当命令的执行超过了指定时间,就记录在slow log中,
slog log保存在内存中,所以没有IO操作。 执行时间比slowlog-log-slower-than大的请求记录到slowlog里面,
单位是微秒,所以1000000就是1秒。 注意,负数时间会禁用慢查询日志,而0则会强制记录所有命令。
latency-monitor-threshold延迟监控功能是用来监控redis中执行比较缓慢的一些操作,用LATENCY打印redis实例在跑命令时的耗时图表。
只记录大于等于下边设置的值的操作,0的话,就是关闭监视。默认延迟监控功能是关闭的,如果你需要打开,
也可以通过CONFIG SET命令动态设置。

EVENT NOTIFICATION事件通知

配置项说明
notify-keyspace-events键空间通知使得客户端可以通过订阅频道或模式,来接收那些以某种方式改动了 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,否则的话,不管其余的参数是什么,都不会有任何 通知被分发。

ADVANCED CONFIG高级配置

配置项说明
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
指定在超过一定的数量或者最大的元素超过某一临界值时,
采用一种特殊的哈希算法
activerehashing指定是否激活重置哈希,默认为开启
aof-rewrite-incremental-fsync在aof重写的时候,如果打开了aof-rewrite-incremental-fsync开关,
系统会每32MB执行一次fsync。这对于把文件写入磁盘是有帮助的,可以避免过大的延迟峰值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值