Redis配置详解

################################## NETWORK #####################################
#bind 192.168.1.101 192.168.1.102#只接受以上两个IP地址上的连接请求。
protected-mode no#保护模式,改为yes启动则bind配置生效
port 26379#监听端口
tcp-backlog 511
#此值必须小于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。
#当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。
timeout 0#客户端与服务器建立连接后,如果在规定的时间内没有进行数据交互,则连接会被断开。
tcp-keepalive 300#tcp保活配置,仅在linux操作系统生效,每隔多少秒向客户端发一次请求,等待客户端响应,防止意外断开。

################################# GENERAL #####################################
#daemonize yes#redis进程是否挂后台运行,yes挂后台,no则前台
supervised no# Redis 在启动后以何种方式进行进程管理和监控,取值有 no(默认)、upstart、systemd、auto等。
pidfile "/home/fssc/redis/redis_26379.pid"
loglevel notice#debug:调试级别,记录详细的信息。verbose:详细级别,用于记录丰富的信息。notice:普通级别,记录普通的信息。warning:警告级别,记录警告信息。
logfile "/home/fssc/redis/redis.log"
databases 16#数据库数量

################################ SNAPSHOTTING  ################################
save ""
#save 300 2 #如果在300秒内有至少2个key发生变化,则进行快照保存。
#save 60 1000 #如果在60秒内有至少1000个key发生变化,则进行快照保存。
#save 30 3000 #如果在30秒内有至少3000个key发生变化,则进行快照保存。
stop-writes-on-bgsave-error yes
#参数设置为no时,即使bgsave操作失败,Redis仍然会继续接受并处理新的写命令
#参数设置为yes时,如果bgsave操作失败,Redis将停止接受新的写命令(包括DEL等修改数据的命令),但会继续处理读命令。
#对于数据一致性要求较高的场景‌:建议开启stop-writes-on-bgsave-error,以确保在bgsave失败时不会进一步加剧数据不一致性。
#对于业务连续性要求较高的场景‌:可以考虑关闭stop-writes-on-bgsave-error,但应同时加强监控和告警,以便在bgsave失败时及时发现问题并处理。
rdbcompression yes
#rdbcompression 设置为 yes 时,表示启用 rdbcompression, 启用 rdbcompression 会使Redis在保存数据前先对其进行压缩,这样可以减少存储空间的使用。但这也意味着在数据加载时可能需要额外的 CPU 时间来解压。
rdbchecksum yes
#rdbchecksum 决定是否在 RDB 文件末尾添加一个 CRC64 校验和。这个校验和帮助检测 RDB 文件是否在传输或存储过程中受到损坏。如果你设置为yes,那么每次 Redis 保存或加载 RDB 文件时,它都会计算并检查这个校验和,确保数据的完整性。
dir "/home/fssc/redis/rdb"
#rdb文件存储目录
dbfilename "dump.rdb"
#rdb文件名

################################# REPLICATION #################################
# slaveof <masterip> <masterport> #从节点配置
slave-serve-stale-data yes
#当设置为yes时:从服务器会继续响应客户端的请求,但返回的数据可能是过时的,或者在第一次同步时数据集可能为空。这是因为从服务器在没有与主服务器保持同步的情况下,仍然会尝试提供其当前可用的数据。
#当设置为no时:从服务器会阻塞所有请求,并在客户端尝试执行除INFO和SLAVEOF命令之外的其他命令时,返回一个错误消息“SYNC with master in progress”。这意味着在从服务器与主服务器重新建立连接并完成同步之前,从服务器不会提供任何数据服务。
slave-read-only yes #从节点只读
repl-diskless-sync no
#当设置为 yes 时,Redis 在执行复制操作时不会将快照保存到磁盘上,而是直接从内存中通过网络发送给从服务器。
#当设置为 no 时,Redis 会先将快照保存到磁盘上,然后再将磁盘上的快照文件发送给从服务器。
repl-diskless-sync-delay 5
#repl-diskless-sync-delay 用于设置无磁盘复制时的延迟时间(以秒为单位)。这个参数仅在 repl-diskless-sync 设置为 yes 时有效。

repl-disable-tcp-nodelay no
#当设置为 yes 时,Redis 在复制连接上会禁用TCP_NODELAY选项,这可能会导致数据在发送过程中被延迟打包和发送,以减少小数据包的数量和网络开销。
#当设置为 no 时(默认值),Redis 会启用TCP_NODELAY选项,确保数据能够尽快被发送出去。

slave-priority 100
#从节点选举优先级,默认100
#选举新主服务器:当主服务器出现故障时,Sentinel等监控和故障转移机制会根据从服务器的优先级来选举一个新的主服务器。优先级最高的从服务器会被优先考虑。
#数据一致性:虽然优先级决定了选举的顺序,但在实际选举过程中,Sentinel还会考虑其他因素,如从服务器的复制偏移量(replication offset)和数据一致性等。复制偏移量越接近主服务器的从服务器,被选举为新主服务器的机会也越大。
#特殊值:如果将某个从服务器的优先级设置为0,则表示这个从服务器永远不会被选举为新主服务器。这可以在某些特定场景下使用,例如,当某个从服务器用于只读操作,且不希望它承担主服务器的角色时。

################################## SECURITY ###################################
requirepass Ztefssc2019  #客户端连接节点需要填写得密码
masterauth Ztefssc2019 #从节点连接主节点,填写主节点密码

################################### LIMITS ####################################
# maxclients 10000  #连接数限制,默认10000
maxmemory 4294967296 #最大内存,这里4G
maxmemory-policy allkeys-lru #淘汰策略
#1.volatile-lru(least recently used):最近最少使用算法,从设置了过期时间的键key中选择空转时间最长的键值对清除掉;
#2.volatile-lfu(least frequently used):最近最不经常使用算法,从设置了过期时间的键中选择某段时间之内使用频次最小的键值对清除掉;
#3.volatile-ttl:从设置了过期时间的键中选择过期时间最早的键值对清除;
#4.volatile-random:从设置了过期时间的键中,随机选择键进行清除;
#5.allkeys-lru:最近最少使用算法,从所有的键中选择空转时间最长的键值对清除;
#6.allkeys-lfu:最近最不经常使用算法,从所有的键中选择某段时间之内使用频次最少的键值对清除;
#7.allkeys-random:所有的键中,随机选择键进行删除;
#8.noeviction:不做任何的清理工作,在redis的内存超过限制之后,所有的写入操作都会返回错误;但是读操作都能正常的进行;

############################## APPEND ONLY MODE ###############################
appendonly yes #aof持久化
appendfilename "appendonly.aof" #aof持久化文件名
appendfsync everysec 
#appendfsync always: 每个命令后立即写入
#appendfsync everysec: 每秒写入一次
#appendfsync no: 由操作系统决定何时写入
no-appendfsync-on-rewrite no
#设置为yes时,如果在此期间发生宕机,可能会丢失一些尚未同步到磁盘的写操作数据。
#设置为no时,由于持续进行AOF文件的同步操作,数据丢失的风险较低,但增加了I/O操作的频率。
auto-aof-rewrite-percentage 100
#较高的值:会减少重写操作的频率,但每次重写时可能需要更多的时间和资源。这适用于写入操作不是特别频繁,或者对性能要求较高、不希望频繁进行AOF重写以影响Redis性能的场景。然而,这样的配置也可能导致AOF文件变得相对较大,特别是在写入操作频繁或数据量较大的情况下。
#较低的值:会增加重写操作的频率,但有助于保持AOF文件的大小在一个较小的范围内,减少重写时的开销。这适用于对AOF文件大小敏感,或者希望更频繁地进行AOF重写以优化文件大小和性能的场景。
auto-aof-rewrite-min-size 64mb
#设置了AOF文件自动重写所需的最小文件大小。只有当AOF文件的大小超过这个阈值时,Redis才会考虑根据auto-aof-rewrite-percentage参数的设置来触发重写操作。
#设置值:用户可以根据Redis实例的实际情况和需求来设置这个参数的值。
#例如,如果Redis实例的数据量较小,且写入操作不频繁,可以考虑设置一个较小的值;相反,如果数据量较大且写入操作频繁,可以考虑设置一个较大的值。
aof-load-truncated yes
#设置为yes:当AOF文件在末端被截断时,Redis会尝试加载该文件,并忽略截断的部分,同时打印一条警告日志通知用户。这意味着Redis将尽可能恢复数据,即使数据不是完整的。
#设置为no:如果AOF文件被截断,Redis将报错并拒绝启动。此时,用户需要使用redis-check-aof工具来修复AOF文件,然后再尝试重新启动Redis。
#业务对数据一致性要求高则配置no,要求尽快恢复则配置yes

################################ LUA SCRIPTING  ###############################
lua-time-limit 5000
#Lua脚本在Redis服务器上的执行时间上限,单位为毫秒。

################################ REDIS CLUSTER  ###############################


################################## SLOW LOG ###################################
slowlog-log-slower-than 10000
#指定了执行时间超过多少微秒的命令会被记录到慢查询日志中
slowlog-max-len 1000
#指定了Redis服务器上最多可以保存多少条慢查询日志

################################ LATENCY MONITOR ##############################
latency-monitor-threshold 0
#指定了Redis延迟监控功能的阈值时间。当Redis中某个命令的执行时间超过了这个阈值时,该命令的延迟信息就会被记录到延迟日志中。

############################# EVENT NOTIFICATION ##############################
notify-keyspace-events ""
#允许客户端通过订阅/发布模式来获取数据库中键的变化以及事件的发生,取值范围是一个由字符组成的字符串,每个字符代表一个事件类型。
#K:键空间通知,包括键的过期、删除等操作。
#E:键事件通知,包括键的操作,如set、get等。
#g:过期事件通知,即键过期时的通知(注意:在某些Redis版本中,g和x都表示过期事件,但具体行为可能有所不同,请参考Redis官方文档)。
#$:字符串命令通知,如set、get等字符串操作。
#l:列表命令通知,如lpush、rpush等列表操作。
#s:集合命令通知,如sadd、srem等集合操作。
#h:哈希命令通知,如hset、hget等哈希操作。
#z:有序集合命令通知,如zadd、zrem等有序集合操作。
#x:在某些Redis版本中,也表示键过期事件(具体请参考Redis官方文档以确认)。
#e:驱逐事件通知,即键被驱逐出内存(例如,由于内存压力而被LRU算法淘汰)。
#A:参数已修改事件通知,这是一个特殊字符,代表g$lshzxe的所有事件类型,即开启所有键空间事件通知。

############################### ADVANCED CONFIG ###############################
hash-max-ziplist-entries 512 #当字段数超过了配置数时,转换为hashtable
hash-max-ziplist-value 64 #使用压缩列表保存时哈希集合中单个元素的最大长度
list-max-ziplist-size -2 #ziplist大小限制
#-5:每个quicklist节点上的ziplist大小不能超过64kb
#-4:每个quicklist节点上的ziplist大小不能超过32kb
#-3:每个quicklist节点上的ziplist大小不能超过16kb
#-2:每个quicklist节点上的ziplist大小不能超过8kb(默认值)
#-1:每个quicklist节点上的ziplist大小不能超过4kb
list-compress-depth 0
#表示一个quicklist两端不被压缩的节点数量,这里的节点指的是quicklist双向链表的节点
#0:是个特殊值,表示都不压缩,这是redis的默认值
#1:表示quicklist两端各有一个节点不压缩
#2:表示quicklist两端各有两个节点不压缩
set-max-intset-entries 512
#上面列表对象使用 ziplist 编码一样,当同时满足下面两个条件时,使用ziplist(压缩列表)编码:
#1、列表保存元素个数小于512个
#2、每个元素长度小于64字节
#不能满足这hash-max-ziplist-entries和hash-max-ziplist-value条件的时候使用 hashtable 编码。
#第一个条件可以通过配置文件中的 set-max-intset-entries 进行修改。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
#元素数量:ZSet 中的元素数量不超过 zset-max-ziplist-entries 指定的值。
#元素大小:ZSet 中的每个元素的大小不超过 zset-max-ziplist-value 指定的值(默认为 64 字节)。
#只有当上述两个条件同时满足时,ZSet 才会使用压缩列表存储。否则,Redis 会切换到跳跃表加字典的组合来表示 ZSet。
hll-sparse-max-bytes 3000
#当HyperLogLog结构使用稀疏编码时,它会将数据分散在多个组中,并对重复的分组计数值进行压缩,以降低内存使用。
#当内存使用超过hll-sparse-max-bytes设置的值时,HyperLogLog会自动从稀疏编码转换为更密集的编码形式,以进一步节省内存。
activerehashing yes
#yes:当设置为yes时,Redis会每100毫秒使用1毫秒的CPU时间来对哈希表进行重新哈希。这种自动重新哈希机制有助于降低内存碎片,优化内存使用,并可能提高哈希表的访问速度。然而,在实时性要求较高的场景下,频繁的重新哈希可能会引入微小的延迟。
#no:当设置为no时,Redis不会自动对哈希表进行重新哈希。这意味着哈希表可能会随着数据的增删改而逐渐变得不平衡,导致内存碎片增多,访问速度下降。然而,在某些对实时性要求极高的场景下,关闭自动重新哈希可以避免因重新哈希而引入的延迟。
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
#对于普通客户端,client-output-buffer-limit通常设置为0 0 0,即不限制缓冲区大小。这是因为普通客户端一般来说不会造成太大的内存负担,因为它们通常是短连接,且大多数操作会立刻完成并返回结果。不过,在某些慢速客户端的情况下,例如网络问题或客户端本身处理性能差,缓冲区可能会增长。在这种情况下,可以设置合理的限制来避免慢客户端拖垮Redis服务器。
#对于从节点(复制客户端),设置硬限制为256MB,意味着从节点的输出缓冲区一旦超过256MB,主节点会断开从节点的连接。软限制为64MB,在60秒内,如果从节点的输出缓冲区超过64MB,主节点也会断开连接。这样的设置是为了防止主节点的内存被耗尽。
#对于发布订阅客户端,设置硬限制为32MB,软限制为8MB,并设定60秒的软限制时间。如果发布订阅客户端在60秒内输出缓冲区超过了8MB,则会被断开连接。这样的设置是为了确保这些客户端不会占用太多内存。
hz 10
#redis配置hz定义了serverCron任务的执行周期,默认是10,代表每秒执行10次。
#每次清理过期key不超过CPU时间的25%(250ms)。比如hz为10,则一次清理时间最大25ms。清理时依次遍历所有db。#从db中随机取20个key,若过期,则删除。若有5个以上key过期,则重复执行。在清理过程中,若达到了25%CPU时间,则退出清理过程。
aof-rewrite-incremental-fsync yes
#aof-rewrite-incremental-fsync参数用于控制在AOF重写期间是否启用增量同步。当设置为yes时,Redis会在AOF重写过程中增量地同步AOF文件到磁盘,这样可以减少重写过程中的数据丢失风险。具体来说,重写过程中产生的新数据会先写入到一个临时缓冲区中,然后按照一定的策略(如每隔一段时间或达到一定数据量)同步到磁盘上的AOF文件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值