Redis核心配置文件
redis.conf是redis最核心的配置文件,其主要配置如下
1. units-单位(了解)
在redis配置中,使用以下字符可以指代响应的bytes
1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 1024*1024 bytes
1g => 1000000000 bytes
1gb => 1024*1024*1024 bytes
2.INCLUDES-包含(了解)
redis支持将配置文件进行拆分,使用includes标签引入相关配置文件.使用较少
include /path/to/local.conf
3.MODULES-模型(了解)
在redis中是支持自定义相关的模型访问redis内置的数据结构,通过modules可以引入自定义的模型,从而使用自定义的模型对数据进行操作.
# Load modules at startup. If the server is not able to load modules
# it will abort. It is possible to use multiple loadmodule directives.
loadmodule /path/to/my_module.so
4.NETWORK-网络(精通)
network相关涉及到redis的网络相关配置.
#在redis中,默认是只让本机访问redis服务器的,为了安全考虑,因为redis里面是可以执行很多脚本的.
#容易成为服务器的漏洞.如果想非本机的客户端访问redis,可以将127.0.0.1设置为0.0.0.0 或者注释bind
#注意,在6.x版本中,若想非本机访问注释bind后还需要将protected-mode改为no
bind 127.0.0.1
# 受保护模式,默认是yes 开启,配置bind ip或者设置访问密码访问,关闭后,外部网络可以直接访问
protected-mode yes
#Redis监听端口,默认为6379
prot 6379
#TCP已连接队列数.
#Linux内核为每个TCP服务器程序维护两条backlog队列,一条是TCP层的未连接队列,一条是应用层的已连接队列,
#分别#对应net.ipv4.tcp_max_syn_backlog和net.core.somaxconn两个内核参数。
#个客户端连接在完成TCP 3次握手之前首先进入到未连接队列,完成握手之后正式建立连接,进入已连接队列,
#交付给应用程序处理。应用程序调用accept()函数从已连接队列取出连接进行处理。
#应用层在调用listen()函数时指定的backlog是已连接队列大小,如果大于somaxconn将被设为somaxconn。
#Linux默认是128,一般redis的tcp-backlog数值是不能大于linux的TCP已连接的队列数的,所以128相对较小建议调整.
tcp-backlog 511
# 使用unix的socket进行通信 当启用该配置,redis服务器启动时会创建一个socket的配置文件.
# 一般该文件只支持本地通信
# unixsocket存放的位置
# unixsocket /tmp/redis.sock
# 设置权限
# unixsocketperm 700
# Close the connection after a client is idle for N seconds (0 to disable)
# 客户端闲置N秒后 断开连接
timeout 0
# 检测连接有效的时间间隔 单位秒 从redis 3.2.1 开始 客户端心跳频率
tcp-keepalive 300
5.TLS/SSL-传输层安全性协议-了解
redis的传输层安全性协议(Transport Layer Security,缩写作TLS,及其前身安全套接层Secure Sockets Layer,缩写作SSL)是一种安全协议).安全传输协议传输数据是进行了加密,会影响性能,所以redis默认是禁用的.如果想要使用redis的安全层传输协议,需要指定
tls-port
#端口
tls-port 6379
# 证书
tls-cert-file redis.crt
# 私钥
tls-key-file redis.key
# Diffie-Hellman 启用 Diffie-Hellman 交换算法文件
#参考: https://blog.csdn.net/lee244868149/article/details/51790397
tls-dh-params-file redis.dh
#配置CA证书
# CA证书
tls-ca-cert-file ca.crt
#CA证书目录
tls-ca-cert-dir /etc/ssl/certs
# 客户端证书 no 不需要证书 optional 可选 如果提供则有效 不强制
tls-auth-clients
#默认情况下,Redis副本不会尝试与其主副本建立TLS连接。
#使用以下指令在复制链接上启用TLS。
tls-replication yes
#默认情况下,Redis集群总线使用纯TCP连接。要为总线协议启用TLS,请使用以下指令:
tls-cluster yes
#显式指定要支持的TLS版本。要仅启用TLSv1.2和TLSv1.3,请使用:
tls-protocols "TLSv1.2 TLSv1.3"
# 配置允许的密码。此配置仅适用于<=TLSv1.2
tls-ciphers DEFAULT:!MEDIUM
# 配置TLSv1.3的密码
tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256
#选择密码时,请使用服务器的首选项而不是客户端,默认情况下,服务器遵循客户机的首选项。
tls-prefer-server-ciphers yes
#默认情况下,TLS会话缓存被启用,以允许支持它的客户端更快、更便宜地重新连接。使用以下指令禁用缓存
tls-session-caching no
#更改缓存的默认TLS会话数。零值将缓存设置为无限大小。默认大小为20480
tls-session-cache-size 5000
#更改缓存TLS会话的默认超时。默认超时为300秒
tls-session-cache-timeout 60
6.GENERAL-常规-精通
#默认情况下,Redis不作为守护进程运行。如果你需要的话,用yes。
daemonize no
# linux 后台进行由谁管理
#systemd system daemon,是linux下的一种init软件
#upstart 是一个用以替换 /sbin/init 守护进程的软件,基于事件机制开发
# auto : 自动检测 使用upstart 还是 systemd
supervised no
#当redis以守护进程方式运行时,默认写入pid的文件及路径
pidfile /var/run/redis_6379.pid
#日志级别,要用warning
loglevelnotice
#指定了记录日志的文件。空字符串的话,日志会打印到标准输出设备。后台运行的redis标准输出是/dev/null
logfile ""
#系统日志已启用否
syslog enabled
#指定系统日志标识
syslog-ident redis
#系统日志工具local0
syslog-facility local0
# redis 初始数据库个数 默认16个 默认使用的数据库是DB 0
databases 16
#在启动日志中显示ASCII的LOG
always-show-logo yes
7.SNAPSHOTTING-快照-精通
快照即备份的意思,主要是redis将数据进行磁盘保存的相关操作
# #900秒有一个key变化,就做一个保存
save 900 1
#300秒有10个key变化,就做一个保存
save 300 10
#默认情况下,如果启用RDB快照,Redis将停止接受写操作和最新的后台保存失败
#如果您已经设置了对Redis服务器的适当监视和持久性,您可能希望禁用此功能,
#以便Redis即使磁盘有问题,也要照常工作.
#发生错误依然进行保存
stop-writes-on-bgsave-error yes
#使用压缩rdb文件,rdb文件压缩使用LZF压缩算法,
#yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间
rdbcompression yes
#是否校验rdb文件。从rdb格式的第五个版本开始,在rdb文件的末尾会带上CRC64的校验和。
#这跟有利于文件的容错性,但是在保存rdb文件的时候,会有大概10%的性能损耗,
#所以如果你追求高性能,可以关闭该配置。
rdbchecksum yes
# rdb文件的名称
dbfilename dump.rdb
#是否同步删除 rdb文件 只在 同时禁用了 rdb和aof是才生效 默认是禁用的,也不推荐
rdb-del-sync-files no
# 工作目录 配合dbfilename 指定名称
dir ./
8.REPLICATION-主从-精通
主从复制,这是redis容灾一种常用的配置,所以必须掌握.
# 指定当前所属的redis的主机的IP 和端口
replicaof 主机IP 主机端口
#如果主机受密码保护 ,设置连接主机的密码
masterauth 主机redis密码
#当本机为从服务时,设置主服务的用户名
masteruser 主服务的用户名
# 当从机正在复制数据时,存在客户端请求,如果为yes 则返回历史数据或者空数据
# 如果为no 则取数据相关的命令 返回 正在与主机同步数据的异常("SYNC with master in progress")
# 以下命令不会抛异常
#INFO, REPLICAOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG,
#SUBSCRIBE,UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB,
#COMMAND, POST, HOST and LATENCY.
replica-serve-stale-data yes
# redis在2.6的情况下从机是只读 配置yes 是只读
replica-read-only yes
#主从同步支持两种策略,
#即disk和socket方式(socket方式尚不完善,还处于实验阶段)
#disk 磁盘复制 当主机将数据同步到RDB文件后,将RDB逐个发给从机
#无盘复制 redis主机创建一个新的进程,子进程直接把RDB文件写到从机的套接字,不需要用到硬盘。
#在硬盘低速而网络高速(高带宽)情况下,无硬盘备份更好。
#no 默认不使用diskless同步方式
#是否使用无盘同步 no 不使用无盘同步 yes 磁盘同步
repl-diskless-sync no
#无盘复制延时开始秒数,默认是5秒,意思是当PSYNC触发的时候,
#master延时多少秒开始向master传送数据流,以便等待更多的slave连接可以同时传送数据流,
#因为一旦PSYNC开始后,如果有新的slave连接master,只能等待下次PSYNC。可以配置为0取消等待,立即开始。
repl-diskless-sync-delay 5
# disabled 不使用无盘加载
# on-empty-db 只有在完全安全的情况下才使用无盘加载
# swapdb 将数据加载到内存副本中,直接使用Socket传输,如果内存不足会导致OOM,被Kill
repl-diskless-load disabled
#从机会每隔repl-ping-replica-period(默认10秒)ping一次master,
#如果超过repl-timeout(默认 60秒)都没有收到响应,就会认为Master挂了。
repl-ping-replica-period 10
#主机响应从机的超时时间
repl-timeout 60
#是否在主从同步时是否禁用TCP_NODELAY
#如果开启TCP_NODELAY,那么主redis会使用更少的TCP包和更少的带宽来向从redis传输数据,但是这可能会增加一些同步的延迟,大概会达到40毫秒左右。
#如果你关闭了TCP_NODELAY,那么数据同步的延迟时间会降低,但是会消耗更多的带宽。
repl-disable-tcp-nodelay no
#设置同步队列长度。
#队列长度(backlog)是主redis中的一个缓冲区,在与从redis断开连接期间,
#主redis会用这个缓冲区来缓存应该发给从redis的数据。
#这样的话,当从redis重新连接上之后,就不必重新全量同步数据,只需要同步这部分增量数据即可。
repl-backlog-size 1mb
# 如果主redis等了一段时间之后,还是无法连接到从redis,那么缓冲队列中的数据将被清理掉。
#我们可以设置主redis要等待的时间长度。如果设置为0,则表示永远不清理。默认是1个小时。
repl-backlog-ttl 3600
#给众多的从redis设置优先级,在主redis持续工作不正常的情况,优先级高的从redis将会升级为主redis。
#而编号越小,优先级越高。
replica-priority 100
#假如主redis发现有超过M个从redis的连接延时大于N秒,那么主redis就停止接受外来的写请求
#至少3个延迟<=10秒的副本在工作,不然主机停止接受写入命令
min-replicas-to-write 3
min-replicas-max-lag 10
# 对master暴露真实的IP和端口
#常用于端口转发或NAT场景下
replica-announce-ip 5.5.5.5
replica-announce-port 1234
9.KEYS TRACKING-客户端缓存配置
客户端缓存是利用应用程序服务器中的可用内存(通常是与数据库节点相比是不同的计算机)进行数据存储.
通常,当需要一些数据时,应用程序服务器将向数据库询问此类信息,如下图所示
+-------------+ +----------+
| | ------- GET user:1234 -------> | |
| Application | | Database |
| | <---- username = Alice ------- | |
+-------------+ +----------+
使用客户端缓存时,应用程序将直接将查询结果存储在应用程序内存中,以便以后可以重用此类结果,而无需再次联系数据库。
+-------------+ +----------+
| | | |
| Application | ( No chat needed ) | Database |
| | | |
+-------------+ +----------+
| Local cache |
| |
| user:1234 = |
| username |
| Alice |
+-------------+
通常,客户端缓存的两个主要优点是:
- 可用的数据延迟非常短
- 数据库系统接收的查询较少,从而可以使用更少的节点来提供相同的数据集。
在默认模式下,服务器会记住给定客户端访问了哪些键,并在修改了相同的键时发送无效消息。这会在服务器端消耗内存,但是仅针对客户端可能在内存中包含的一组密钥发送无效消息。默认情况下是设置了
1M
的key,当达到时redis会回收,即使他们没有被修改,只是为了回收内存,强制客户端使缓存的值无效.
# 设置跟踪表中的最大key数
tracking-table-max-keys 1000000
10.SECURITY-权限(熟悉)
#ACL日志用于跟踪失败的命令和关联的身份验证事件
#设置ACL日志的最大条条数
acllog-max-len 128
# acl日志保存的位置
aclfile /etc/redis/users.acl
#设置Redis实例密码
requirepass foobared
#禁用或者重命名命令
rename-command CONFIG ""
11.CLIENTS-客户机(了解)
#设置同时连接的最大客户端数
# 注意: 使用Redis Cluster时,最大连接数也是与集群总线共享
maxclients 10000
12.MEMORY MANAGEMENT-内存管理
redis自身的内存管理
#设置redis最大内存,一般在生产环境需要指定redis最大内存,避免OOM.
#一般使用服务器3/4内存,注意,该服务器只做redis服务器.
maxmemory <bytes>
#达到内存后的删除策略
#volatile-lru -> 根据LRU算法生成的过期时间来删除。
#allkeys-lru -> 根据LRU算法删除任何key。
#volatile-random -> 根据过期设置来随机删除key。
#allkeys->random -> 无差别随机删。
#volatile-ttl -> 根据最近过期时间来删除(辅以TTL)
#noeviction -> 谁也不删,直接在写操作时返回错误。
maxmemory-policy noeviction
#默认情况下,Redis将检查五个键并选择一个是最近使用的
#LRU、LFU、TTL检测的样本数量 值越大越精确,但是性能低.
# 默认5 认为已经可以,10 是最好的,3是最快的
maxmemory-samples 5
# 是否忽略从机的最大内存配置 yes 忽略 no 不忽略
#从Redis 5开始,默认情况下,复制副本将忽略其maxmemory设置
#当升级为master后又会检查,但是如果从机能够支持写入,则从机内存是要大于主机的.
#为了避免内存不足的情况,一定要确定内存的充足,所以不建议忽略内存配置
replica-ignore-maxmemory yes
#Redis以两种方式回收过期的密钥:当发现这些密钥过期时,在访问时,以及在后台,即所谓的“活动过期密钥”。
#密钥空间被缓慢地交互扫描,寻找过期的密钥进行回收,这样就可以释放内存中过期的密钥,
#并且在短时间内不会再被访问。
#过期检查会尽量避免超过10%的过期key和避免超过25%的总内存数据.但是基于性能的考虑,
#可以设置为1,让其逐渐增长到10%.算是CPU 内存 迟延的一种折中处理
active-expire-effort 1
13.LAZY FREEING-惰性删除-了解
#针对redis内存使用达到maxmeory,并设置有淘汰策略时,
#在被动淘汰键时,是否采用lazy free机制。因为此场景开启lazy free,
#可能使用淘汰键的内存释放不及时,导致redis内存超用,超过maxmemory的限制。
#此场景使用时,请结合业务测试。
lazyfree-lazy-eviction no
#针对设置有TTL的键,达到过期后,被redis清理删除时是否采用lazy free机制。
#此场景建议开启,因TTL本身是自适应调整的速度。
lazyfree-lazy-expire no
#针对有些指令在处理已存在的键时,会带有一个隐式的DEL键的操作。
#如rename命令,当目标键已存在,redis会先删除目标键,如果这些目标键是一个big key,
#那就会引入阻塞删除的性能问题。 此参数设置就是解决这类问题,建议可开启。
lazyfree-lazy-server-del no
# 进行全量同步时,会运行flushall来清理自己的数据,重新加载主机的RDB文件.
replica-lazy-flush no
#Redis 有两种方式删除键。一种是使用如 DEL 这样的命令进行的同步删除。
#同步删除意味着删除过程中服务端会停止处理新进来的命令。
#若要删除的 key 关联了一个小的 object 删除耗时会很短。
#若要删除的 key 管理了一个很大的 object,比如此对象有上百万个元素,
#服务端会阻塞相同长一段时间(甚至超过一秒)。
#由于以上原因,Redis 同时提供了一种非阻塞的方式用于删除,
#比如 UNLINK(非阻塞的 DEL)以及用于 FLUSHALL 和 FLUSHDB 的 ASYNC 选项,
#这些命令能在后台回收内存。 这些命令能在常数时间内执行完毕。其他线程会在后台尽快回收内存。
lazyfree-lazy-user-del no
14.THREADED I/O-线程IO(了解)
Redis主要是单线程的,但是也有一些线程操作,比如取消链接、缓慢的I/O访问以及其他在侧线程上执行的操作。
现在还可以在不同的I/O线程中处理Redis客户机套接字读写。由于编写速度非常慢,通常Redis用户使用流水线来加速每个核心的Redis性能,并生成多个实例来扩展更多的性能。使用I/O线程,可以轻松地将Redis的速度提高两倍,而无需使用流水线或实例切分。
默认情况下,线程是禁用的,我们建议只在至少有4个或更多内核的机器上启用线程,至少保留一个备用内核。
使用8个以上的线程不太可能有多大帮助。我们还建议仅当您确实存在性能问题时才使用线程化I/O,因为Redis实例能够使用相当大比例的CPU时间,否则使用此功能毫无意义。
# IO线程数量
io-threads 4
#读线程数量
io-threads-do-reads no
15.KERNEL OOM CONTROL-内存控制器(了解)
在Linux上,可以向内核提示内存不足时应该首先终止哪些进程。
启用此功能可使Redis根据其角色主动控制其所有进程的oom分数值.
# redis内存分数值选项
# no 不修改
# yes 相当于 relative
# absolute 将 oom score adj值中的值按原样写入内核
# relative 当服务器启动时,使用相对于oom_score_adj初始值的值,
#然后将其限制在-1000到1000的范围内。因为初始值通常为0,所以它们通常会与绝对值匹配。
oom-score-adj no
#使用oom score adj时,此指令控制用于主进程、副本进程和后台子进程的特定值。
#数值范围为-2000到2000(越高意味着被杀的可能性越大)。
#非特权进程(不是根进程,也没有CAP_SYS_RESOURCE功能)可以自由地增加它们的值,
#但不能将其降低到初始设置以下。oom score adj值设置为正值将始终成功。
oom-score-adj-values 0 200 800
16.APPEND ONLY MODE-追加(精通)
默认情况下,Redis将数据集异步转储到磁盘上。这种模式在许多应用程序中已经足够好了,但是Redis进程出现问题或断电可能会导致几分钟的写丢失(取决于配置的保存点)。仅追加写入到文件是一种可选的持久性模式,它提供了更好的持久性。
例如,使用默认的数据文件同步策略(见后面的配置文件)Redis在一个时间段内只会丢失一秒钟的写操作当发生突发事件时,比如服务器断电,或者某个事件发生时的一次写入Redis进程本身发生错误,但操作系统仍然正常运行。AOF和RDB持久性可以同时启用而不会出现问题。如果启动时启用了AOF,Redis将加载AOF,即具有更好持久性.
# 是否启用aof持久化方式.即是否在每次更新操作后进行日志记录,默认配置是no,
# 即在采用异步方式把数据写入到磁盘,如果不开启,可能会在断电时导致部分数据丢失。
appendonly no
#日志文件名,默认为appendonly.aof
appendfilename "appendonly.aof"
#aof文件刷新的频率
#no 依靠OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差
#always 每提交一个修改命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全。
#everysec 每秒钟都调用fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据。
appendfsync everysec
#指定是否在后台aof文件rewrite期间调用fsync,默认为no,表示要调用fsync(无论后台是否有子进程在刷盘)
#Redis在后台写RDB文件或重写AOF文件期间会存在大量磁盘IO,此时,在某些linux系统中,调用fsync可能会阻塞。
no-appendfsync-on-rewrite no
#aof文件增长比例,指当前aof文件比上次重写的增长比例大小。
#aof重写即在aof文件在一定大小之后,重新将整个内存写到aof文件当中,
#以反映最新的状态(相当于bgsave)。这样就避免了,aof文件过大而实际内存数据小的问题(频繁修改数据问题)。
auto-aof-rewrite-percentage 100
#aof文件重写最小的文件大小,即最开始aof文件必须要达到这个文件时才触发,
#后面的每次重写就不会根据这个变量了(根据上一次重写完成之后的大小).
#此变量仅初始化启动redis有效.如果是redis恢复时,则lastSize等于初始aof文件大小。
auto-aof-rewrite-min-size 64mb
#指redis在恢复时,会忽略最后一条可能存在问题的指令。
#默认值yes。即在aof写入时,可能存在指令写错的问题(突然断电,写了一半),这种情况下,
#yes会log并继续,而no会直接恢复失败。
aof-load-truncated yes
#在开启了这个功能之后,AOF重写产生的文件将同时包含RDB格式的内容和AOF格式的内容,
#其中RDB格式的内容用于记录已有的数据,而AOF格式的内存则用于记录最近发生了变化的数据,
#这样Redis就可以同时兼有RDB持久化和AOF持久化的优点(
#既能够快速地生成重写文件,也能够在出现问题时,快速地载入数据)。
aof-use-rdb-preamble yes
17.LUA SCRIPTING-LUA 脚本(了解)
#一个Lua脚本最长的执行时间,单位为毫秒,如果为0或负数表示无限执行时间,默认为5000
lua-time-limit 5000
18.REDIS CLUSTER-集群(精通)
redis的集群模式,是一种常规的进行扩容的方式,对于数据体量大的需求,一般都会使用redis集群
#如果是yes,表示启用集群,否则以单例模式启动
cluster-enabled yes
#这不是一个用户可编辑的配置文件,这个文件是Redis集群节点自动持久化每次配置的改变,
#为了在启动的时候重新读取它。
cluster-config-file nodes-6379.conf
#超时时间,集群节点不可用的最大时间。如果一个master节点不可到达超过了指定时间,则认为它失败了。
#注意,每一个在指定时间内不能到达大多数master节点的节点将停止接受查询请求。
#节点持续timeout的时间,才认定该节点出现故障,需要进行主从切换
cluster-node-timeout 15000
#作为上面timeout的系数来放大时间
cluster-replica-validity-factor
#一个master和slave保持连接的最小数量(即:最少与多少个slave保持连接),
#也就是说至少与其它多少slave保持连接的slave才有资格成为master。
cluster-migration-barrier 1
#如果设置为yes,这也是默认值,如果key space没有达到百分之多少时停止接受写请求。
#如果设置为no,将仍然接受查询请求,即使它只是请求部分key。
cluster-require-full-coverage yes
#此选项设置为yes时,可防止从机尝试对其进行故障转移master在主故障期间。
#然而,仍然可以强制执行手动故障转移。
cluster-replica-no-failover no
#是否允许集群在宕机时读取
cluster-allow-reads-when-down no
19.CLUSTER DOCKER/NAT support -docker集群/NAT支持(了解)
#宣布IP地址
cluster-announce-ip 10.1.1.5
#宣布服务端口
cluster-announce-port 6379
#宣布集群总线端口
cluster-announce-bus-port 6380
20.SLOW LOG-慢查询日志(熟悉)
#决定要对执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查询进行记录。
slowlog-log-slower-than 10000
#它决定 slow log 最多能保存多少条日志, slow log 本身是一个 FIFO 队列,
#当队列大小超过 slowlog-max-len 时,最旧的一条日志将被删除,而最新的一条日志加入到 slow log
slowlog-max-len 128
21.LATENCY MONITOR-延时监控(了解)
#能够采样不同的执行路径来知道redis阻塞在哪里。
#这使得调试各种延时问题变得简单,设置一个毫秒单位的延时阈值来开启延时监控。
latency-monitor-threshold 0
22.EVENT NOTIFICATION-事件通知(了解)
#键事件通知
#K 键空间通知,所有通知以 keyspace@ 为前缀.
#E 键事件通知,所有通知以 keyevent@ 为前缀
#g DEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知
#$ 字符串命令的通知
#l 列表命令的通知
#s 集合命令的通知
#h 哈希命令的通知
#z 有序集合命令的通知
#x 过期事件:每当有过期键被删除时发送
#e 驱逐(evict)事件:每当有键因为 maxmemory 策略而被删除时发送
#A 参数 g$lshzxe 的别名
书写:notify-keyspace-events Ex
notify-keyspace-events " "
23.GOPHER SERVER-GOPHER协议服务(了解)
#开启gopher功能
默认配置项:gopher-enabled no
24.ADVANCED CONFIG-高级配置(掌握)
#这个参数指的是ziplist中允许存储的最大条目个数,默认为512,建议为128
hash-max-ziplist-entries 512
#ziplist中允许条目value值最大字节数,默认为64,建议为1024
hash-max-ziplist-value 64
#ziplist列表最大值,默认存在五项
#-5:最大大小:64 Kb <——不建议用于正常工作负载
#-4:最大大小:32 Kb <——不推荐
#-3:最大大小:16 Kb <——可能不推荐
#-2:最大大小:8 Kb<——很好
#-1:最大大小:4 Kb <——好
list-max-ziplist-size -2
#一个quicklist两端不被压缩的节点个数。
#0: 表示都不压缩。这是Redis的默认值
#1: 表示quicklist两端各有1个节点不压缩,中间的节点压缩。
#3: 表示quicklist两端各有3个节点不压缩,中间的节点压缩。
list-compress-depth 0
#当集合中的元素全是整数,且长度不超过set-max-intset-entries(默认为512个)时,
#redis会选用intset作为内部编码,大于512用set。
set-max-intset-entries 512
#当有序集合的元素小于zset-max-ziplist-entries配置(默认是128个),
#同时每个元素的值都小于zset-max-ziplist-value(默认是64字节)时,
#Redis会用ziplist来作为有序集合的内部编码实现,ziplist可以有效的减少内存的使用。
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
#value大小 小于等于hll-sparse-max-bytes使用稀疏数据结构(sparse),
#大于hll-sparse-max-bytes使用稠密的数据结构(dense)。
hll-sparse-max-bytes 3000
#stream-node-max-bytes&stream-node-max-entries
Streams单个节点的字节数,以及切换到新节点之前可能包含的最大项目数。
stream-node-max-entries 100
#主动重新散列每100毫秒CPU时间使用1毫秒,以帮助重新散列主Redis散列表(将顶级键映射到值)。
activerehashing yes
#对客户端输出缓冲进行限制可以强迫那些不从服务器读取数据的客户端断开连接,用来强制关闭传输缓慢的客户端。
client-output-buffer-limit normal 0 0 0
#对于slave client和MONITER client,如果client-output-buffer一旦超过256mb,
#又或者超过64mb持续60秒,那么服务器就会立即断开客户端连接。
client-output-buffer-limit replica 256mb 64mb 60
#对于pubsub client,如果client-output-buffer一旦超过32mb,
#又或者超过8mb持续60秒,那么服务器就会立即断开客户端连接。
client-output-buffer-limit pubsub 32mb 8mb 60
#客户端查询缓冲区累积新命令。
#默认情况下,它被限制为固定数量,以避免协议失步(例如由于客户端中的错误)
#将导致查询缓冲区中的未绑定内存使用。 但是,如果您有非常特殊的需求,可以在此配置它,
#例如我们巨大执行请求。
默认配置项:client-query-buffer-limit 1gb
#在Redis协议中,批量请求(即表示单个字符串的元素)通常限制为512 MB。 但是,您可以在此更改此限制。
proto-max-bulk-len 512mb
#hz可以理解为执行后台任务的频率
#默认情况下,hz设置为10.提高值时,在Redis处于空闲状态下,将使用更多CPU。
#范围介于1到500之间,大多数用户应使用默认值10,除非仅在需要非常低延迟的环境中将此值提高到100。
hz 10
#启用动态HZ时,实际配置的HZ将用作基线,但是一旦连接了更多客户端,
#将根据实际需要使用配置的HZ值的倍数。
dynamic-hz yes
#当一个子进程重写AOF文件时,如果启用下面的选项,
#则文件每生成32M数据会被同步。
aof-rewrite-incremental-fsync yes
#当redis保存RDB文件时,如果启用了以下选项,则每生成32 MB数据将对文件进行fsync。
#这对于以递增方式将文件提交到磁盘并避免大延迟峰值非常有用。
rdb-save-incremental-fsync yes
25.ACTIVE DEFRAGMENTATION-活跃的碎片整理(了解)
#是否启用碎片整理
activedefrag no
#启动活动碎片整理的最小碎片浪费量
active-defrag-ignore-bytes 100mb
#启动碎片整理的最小碎片百分比
active-defrag-threshold-lower 10
#使用最大消耗时的最大碎片百分比
active-defrag-threshold-upper 100
#在CPU百分比中进行碎片整理的最小消耗
active-defrag-cycle-min 1
#在CPU百分比达到最大值时,进行碎片整理
active-defrag-cycle-max 25
#从set / hash / zset / list 扫描的最大字段数
active-defrag-max-scan-fields 1000
#默认情况下,用于清除的Jemalloc后台线程是启用的。
jemalloc-bg-thread yes
网友评论