Java

生产环境redis配置

2018-12-27  本文已影响41人  Tomy_Jx_Li
--------这里是每个文件的自己的配置---------
#包含通用配置
include /home/public/redis-sdp/redis-common.conf
#监听tcp端口
port 7000
#最大可用内存 
    #达到最大内存后,Redis会先尝试清除已到期或即将到期的Key
    #当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,
    #会把Key存放内存,Value会存放在swap区
maxmemory 3000m
#内存耗尽时采用的淘汰策略:
# volatile-lru -> remove the key with an expire set using an LRU algorithm
# allkeys-lru -> remove any key accordingly to the LRU algorithm
# volatile-random -> remove a random key with an expire set
# allkeys-random -> remove a random key, any key
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
# noeviction -> don't expire at all, just return an error on write operations
maxmemory-policy allkeys-lru
#aof存储文件
appendfilename "appendonly-7000.aof"
#rdb文件,只用于动态添加slave过程
dbfilename dump-7000.rdb
#cluster配置文件(启动自动生成)
cluster-config-file nodes-7000.conf
#部署在同一机器的redis实例,把<span style="font-size: 1em; line-height: 1.5;">auto-aof-rewrite搓开,防止瞬间fork所有redis进程做rewrite,占用大量内存</span>
    #aof自动重写配置,当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,
    #即当aof文件增长到一定大小的时候,Redis能够调用bgrewriteaof对日志文件进行重写。
    #当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程。
auto-aof-rewrite-percentage 80-100


这里是redis-common.conf的
#GENERAL
daemonize yes
#TCP监听的最大容纳数量,在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。Linux 内核会把这个值缩小成 /proc/sys/net/core/somaxconn对应的值,要提升并发量需要修改这两个值才能达到目的
tcp-backlog 511
#客户端空闲多少秒之后直接关闭,为0的不管
timeout 0
#单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是300s,如果设置为0,则不会周期性的检测
tcp-keepalive 0
#日志级别,有debug(适合开发、测试阶段,日志信息较多)、verbose(相对于debug日志量减少)、notice(适用于生产)、warning(仅有部分重要关键信息才会记录)
loglevel notice
#redis数据看熟练
databases 16
#redis的快照文件的存放路径
dir /home/public/redis-sdp/redis-data
#当slave于master失去连接,或者复制正在进行时,是否对外提供服务
    #yes,表示仍然提供服务,但是返回的数据可能是老数据或者是空(第一次同步的时候)
    #no, 除了执行info he slaveof这个命令,其他命令一律返回"SYNC with master in progress" 的错误
slave-serve-stale-data yes
#slave只读
slave-read-only yes
#not use default
#同步之后是否禁用从站上的TCP_NODELAY
  #如果你选择yes,redis会使用较少量的TCP包和带宽向从站发送数据。但这会导致在从站增加一点数据的延时。
  #Linux内核默认配置情况下最多40毫秒的延时。
  #如果选择no,从站的数据延时不会那么多,但备份需要的带宽相对较多。
  #默认情况下我们将潜在因素优化,但在高负载情况下或者在主从站都跳的情况下,把它切换为yes是个好主意。
repl-disable-tcp-nodelay yes
#从站优先级是可以从redis的INFO命令输出中查到的一个整数。当主站不能正常工作时
    #redis sentinel使用它来选择一个从站并将它提升为主站。
    #低优先级的从站被认为更适合于提升,因此如果有三个从站优先级分别是10, 
    #100,25,sentinel会选择优先级为10的从站,因为它的优先级最低。
    #然而优先级值为0的从站不能执行主站的角色,因此优先级为0的从站永远不会被redis sentinel提升。
    #默认优先级是100
slave-priority 100
#打开aof持久化
appendonly yes
#每秒一次aof写
appendfsync everysec
#关闭在aof rewrite的时候对新的写操作进行fsync
    #在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 yes
#设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
#打开redis集群
cluster-enabled yes
#节点互连超时的阀值
cluster-node-timeout 15000
#master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数若被设为2,
    #那么只有当一个主节点拥有2 个可工作的从节点时,它的一个从节点会尝试迁移。
cluster-migration-barrier 1
#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
#键空间通知使得客户端可以通过订阅频道或模式,来接收那些以某种方式改动了 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,否则的话,不管其余的参数是什么,都不会有任何 通知被分发
notify-keyspace-events ""
#hash类型的数据结构在编码上可以使用ziplist和hashtable。
    #ziplist的特点就是文件存储(以及内存存储)所需的空间较小,在内容较小时,性能和hashtable几乎一样。
    #因此redis对hash类型默认采取ziplist。如果hash中条目的条目个数或者value长度达到阀值,将会被重构为hashtable。
    #这个参数指的是ziplist中允许存储的最大条目个数,,默认为512,建议为128
hash-max-ziplist-entries 512
#ziplist中允许条目value值最大字节数,默认为64,建议为1024
hash-max-ziplist-value 64
#当取正值的时候,表示按照数据项个数来限定每个quicklist节点上的ziplist长度。比如,当这个参数配置成5的时候,表示每个quicklist节点的ziplist最多包含5个数据项。
#当取负值的时候,表示按照占用字节数来限定每个quicklist节点上的ziplist长度。这时,它只能取-1到-5这五个值,每个值含义如下:
    #-5: 每个quicklist节点上的ziplist大小不能超过64 Kb。(注:1kb => 1024 bytes)
    #-4: 每个quicklist节点上的ziplist大小不能超过32 Kb。
    #-3: 每个quicklist节点上的ziplist大小不能超过16 Kb。
    #-2: 每个quicklist节点上的ziplist大小不能超过8 Kb。(-2是Redis给出的默认值)
    #-1: 每个quicklist节点上的ziplist大小不能超过4 Kb。
list-max-ziplist-entries 512
#list允许的最大的value值,如果超出不适用ziplist编码
list-max-ziplist-value 64
#数据量小于等于set-max-intset-entries用intset,大于set-max-intset-entries用set
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

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

#对客户端输出缓冲进行限制可以强迫那些不从服务器读取数据的客户端断开连接,用来强制关闭传输缓慢的客户端。
    #对于normal client,第一个0表示取消hard limit,第二个0和第三个0表示取消soft limit,normal client默认取消限制,因为如果没有寻问,他们是不会接收数据的
client-output-buffer-limit normal 0 0 0
#对于slave client和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



上一篇下一篇

猜你喜欢

热点阅读