Redis 3.2.x版本 redis.conf 的配置文件参数详解

[root@web01 blog]# egrep -v"#|^$" /application/redis/conf/6379.confnode

bind127.0.0.1 #绑定的主机地址,不设置默认将处理全部请求web

protected-modeyes # 3.2里的参数,是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码   和bind,能够开启。否  则最好关闭,设置为noredis

port6379 #指定redis监听端口算法

tcp-backlog511 #此 参数肯定了TCP链接中已完成队列(完成三次握手以后)的长度, 固然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是 128。当系统并发量大而且客户端速度缓慢的时候,能够将这二个参数一块儿参考设定。该内核参数默认值通常是128,对于负载很大的服务程序来讲大大的不 够。通常会将它修改成2048或者更大。在/etc/sysctl.conf中添加:net.core.somaxconn =2048,而后在终端中执行sysctl -p数据库

timeout0 #当 客户端闲置多长时间后关闭链接,若是指定为0,表示关闭该功能安全

tcp-keepalive300 #如 果设置不为0,就使用配置tcp的SO_KEEPALIVE值,使用keepalive有两个好处:检测挂掉的对端。下降中间设备出问题而致使网络看似连 接却已经与对端端口的问题。在Linux内核中,设置了keepalive,redis会定时给对端发送ack。检测到对端关闭须要两倍的设置值。服务器

daemonizeno #当为yes的时候,以守护进程的模式运行(后台运行)网络

supervisedno能够经过upstart和systemd管理Redis守护进程,这个参数是和具体的操做系统相关的数据结构

pidfile/var/run/redis_6379.pid #当redis以守护进程方式运行时,默认写入pid的文件及路径并发

loglevelnotice 日志级别,要用warning

logfile"" #指定了记录日志的文件。空字符串的话,日志会打印到标准输出设备。后台运行的redis标准输出是/dev/null

databases16 数据库的数量,默认使用的数据库是DB 0。能够经过”SELECT “命令选择一个db

save900 1 #900秒有一个key变化,就作一个保存

save300 10 #300秒有10个key变化,就作一个保存,这里须要和开发沟通

save60 10000 #60秒有10000个key变化就作一个保存

stop-writes-on-bgsave-erroryes #在出现错误的时候,是否是要中止保存

rdbcompressionyes使用压缩rdb文件,rdb文件压缩使用LZF压缩算法,yes:压缩,可是须要一些cpu的消耗。no:不压缩,须要更多的磁盘空间

rdbchecksumyes是否校验rdb文件。从rdb格式的第五个版本开始,在rdb文件的末尾会带上CRC64的校验和。这跟有利于文件的容错性,可是在保存rdb文件的时候,会有大概10%的性能损耗,因此若是你追求高性能,能够关闭该配置。

dbfilenamedump.rdb rdb文件的名称

dir./ 数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录

slave-serve-stale-datayes当 从库同主机失去链接或者复制正在进行,从机库有两种运行方式:1) 若是slave-serve-stale-data设置为yes(默认设置),从库会继续响应客户端的请求。2) 若是slave-serve-stale-data设置为no,除去INFO和SLAVOF命令以外的任何请求都会返回一个错误”SYNC with master in progress”

slave-read-onlyyes做为从服务器,默认状况下是只读的(yes),能够修改为NO,用于写(不建议)

repl-diskless-syncno是否使 用socket方式复制数据。目前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-delay5 diskless复制的延迟时间,防止设置为0。一旦复制开始,节点不会再接收新slave的复制请求直到下一个rdb传输。因此最好等待一段时间,等更多的slave连上来。

repl-disable-tcp-nodelayno是否禁止复制tcp连接的tcp nodelay[gs1] [gs2] 参 数,可传递yes或者no。默认是no,即便用tcp nodelay。若是master设置了yes来禁止tcp nodelay设置,在把数据复制给slave的时候,会减小包的数量和更小的网络带宽。可是这也可能带来数据的延迟。默认咱们推荐更小的延迟,可是在数 据量传输很大的场景下,建议选择yes。

slave-priority100当master不可用,Sentinel会根据slave的优先级选举一个master。最低的优先级的slave,当选master。而配置成0,永远不会被选举。

appendonlyno #默认redis使用的是rdb方式持久 化,这种方式在许多应用中已经足够用了。可是redis若是中途宕机,会致使可能有几分钟的数据丢失,根据save来策略进行持久化,Append Only File是另外一种持久化方式,能够提供更好的持久化特性。Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件

appendfilename"appendonly.aof" sof文件名

appendfsynceverysec #aof持久化策略的配置

#no表示不执行fsync,由操做系统保证数据同步到磁盘,速度最快。

#always表示每次写入都执行fsync,以保证数据同步到磁盘。

#everysec表示每秒执行一次fsync,可能会致使丢失这1s数据。

no-appendfsync-on-rewriteno在 aof重写或者写入rdb文件的时候,会执行大量IO,此时对于everysec和always的aof模式来讲,执行fsync会形成阻塞过长时 间,no-appendfsync-on-rewrite字段设置为默认设置为no。若是对延迟要求很高的应用,这个字段能够设置为yes,不然仍是设置 为no,这样对持久化特性来讲这是更安全的选择。设置为yes表示rewrite期间对新写操做不fsync,暂时存在内存中,等rewrite完成后再 写入,默认为no,建议yes。Linux的默认fsync策略是30秒。可能丢失30秒数据。

auto-aof-rewrite-percentage100 aof自 动重写配置。当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增加到必定大小的时候Redis可以调用 bgrewriteaof对日志文件进行重写。当前AOF文件大小是上第二天志重写获得AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程

auto-aof-rewrite-min-size64mb #设置容许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的状况还要重写

aof-load-truncatedyes#aof文 件可能在尾部是不完整的,当redis启动的时候,aof文件的数据被载入内存。重启可能发生在redis所在的主机操做系统宕机后,尤为在ext4文件 系统没有加上data=ordered选项(redis宕机或者异常终止不会形成尾部不完整现象。)出现这种现象,能够选择让redis退出,或者导入尽 可能多的数据。若是选择的是yes,当截断的aof文件被导入的时候,会自动发布一个log给客户端而后load。若是是no,用户必须手动redis- check-aof修复AOF文件才能够。

lua-time-limit5000若是达到最大时间限制(毫秒),redis会记个log,而后返回error。当一个脚本超过了最大时限。只有SCRIPT KILL和SHUTDOWN NOSAVE能够用。第一个能够杀没有调write命令的东西。要是已经调用了write,只能用第二个命令杀。

slowlog-log-slower-than10000 slog log是用来记录redis运行中执行比较慢的命令耗时。当命令的执行超过了指定时间,就记录在slow log中,slog log保存在内存中,因此没有IO操做。

#执行时间比slowlog-log-slower-than大的请求记录到slowlog里面,单位是微秒,因此1000000就是1秒。注意,负数时间会禁用慢查询日志,而0则会强制记录全部命令。

slowlog-max-len128慢查询日志长度。当一个新的命令被写进日志的时候,最老的那个记录会被删掉。这个长度没有限制。只要有足够的内存就行。你能够经过 SLOWLOG RESET 来释放内存。

latency-monitor-threshold0 #延迟监控功能是用来监控redis中执行比较缓慢的一些操做,用LATENCY打印redis实例在跑命令时的耗时图表。只记录大于等于下边设置的值的操做。0的话,就是关闭监视。默认延迟监控功能是关闭的,若是你须要打开,也能够经过CONFIGSET命令动态设置。

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,不然的话,无论其他的参数是什么,都不会有任何 通知被分发。详细使用能够参考http://redis.io/topics/notifications

hash-max-ziplist-entries512#数据量小于等于hash-max-ziplist-entries的用ziplist,大于hash-max-ziplist-entries用hash

hash-max-ziplist-value64 #value大小小于等于hash-max-ziplist-value的用ziplist,大于hash-max-ziplist-value用hash。

list-max-ziplist-size-2

# The highestperforming option is usually -2 (8 Kb size) or -1 (4 Kb size),

# but if your use caseis unique, adjust the settings as necessary.

list-compress-depth0

set-max-intset-entries512 #数据量小于等于set-max-intset-entries用iniset,大于set-max-intset-entries用set。

zset-max-ziplist-entries128 #数据量小于等于zset-max-ziplist-entries用ziplist,大于zset-max-ziplist-entries用zset。

zset-max-ziplist-value64 #value大小小于等于zset-max-ziplist-value用ziplist,大于zset-max-ziplist-value用zset。

hll-sparse-max-bytes3000#value大 小小于等于hll-sparse-max-bytes使用稀疏数据结构(sparse),大于hll-sparse-max-bytes使用稠密的数据结 构(dense)。一个比16000大的value是几乎没用的,建议的value大概为3000。若是对CPU要求不高,对空间要求较高的,建议设置到 10000左右。

activerehashingyes#Redis将 在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行从新hash,能够下降内存的使用。当你的使用场景中,有很是严格的实时性须要, 不可以接受Redis时不时的对请求有2毫秒的延迟的话,把这项配置为no。若是没有这么严格的实时性要求,能够设置为yes,以便可以尽量快的释放内 存。

client-output-buffer-limitnormal 0 0 0

##对客户端输出缓冲进行限制能够强迫那些不从服务器读取数据的客户端断开链接,用来强制关闭传输缓慢的客户端。

#对于normalclient,第一个0表示取消hard limit,第二个0和第三个0表示取消soft limit,normal client默认取消限制,由于若是没有寻问,他们是不会接收数据的。

client-output-buffer-limitslave 256mb 64mb 60 #对于slaveclient和MONITER client,若是client-output-buffer一旦超过256mb,又或者超过64mb持续60秒,那么服务器就会当即断开客户端链接。

client-output-buffer-limitpubsub 32mb 8mb 60 #对于pubsub client,若是client-output-buffer一旦超过32mb,又或者超过8mb持续60秒,那么服务器就会当即断开客户端链接。

hz10 #redis执行任务的频率为1s除以hz。

aof-rewrite-incremental-fsyncyes #在aof重写的时候,若是打开了aof-rewrite-incremental-fsync开关,系统会每32MB执行一次fsync。这对于把文件写入磁盘是有帮助的,能够避免过大的延迟峰值。

相关文章
相关标签/搜索