10、maxmemory-clients
这是 7.0 版本特性,每个与服务端建立连接的客户端都会占用内存(查询缓冲区、输出缓冲区和其他缓冲区),大量的客户端可能会占用过大内存导致 OOM,为了避免这个情况,我提供了一种叫做(Client Eviction)客户端驱逐机制用于限制内存占用 。
配置方式有两种 。
- 具体内存值, maxmemory-clients 1g来限制所有客户端占用内存总和 。
- 百分比,maxmemory-clients 5% 表示客户端总和内存占用最多为 Redis 最大内存配置的 5% 。
MySQL:“达到最大内存限制,你会把所有客户端连接都释放么?”不是的,一旦达到限制,我会优先尝试断开使用内存最多的客户端 。
11、proto-max-bulk-len
批量请求(单个字符串的元素)内存大小限制,默认是 proto-max-bulk-len 512mb,你可以修改限制,但必须大于等于 1mb 。
12、hz
我会在后台调用一些函数来执行很多后台任务,比如关闭超时连接,清理不再被请求的过期的 key,rehash、执行 RDB 内存快照和 AOF 持久化等 。
并不是所有的后台任务都需要使用相同的频率来执行,你可以使用 hz 参数来决定执行这些任务的频率 。
默认配置是 hz 10,表示每秒执行 10 次,更大的值会消耗更多的 CPU 来处理后台任务,带来的效果就是更快的清理过期 key,清理的超时连接更精确 。
这个值的范围是 1~500,不过并不推荐设置大于 100 的值 。大家使用默认值就好,或者最多调高到 100 。
13、dynamic-hz
默认配置是 dynamic-hz yes,启用 dynamic-hz 后,将启用自适应 HZ 值的能力 。hz 的配置值将会作为基线,Redis 服务中的实际 hz 值会在基线值的基础上根据已连接到 Redis 的客户端数量自动调整,连接的客户端越多,实际 hz 值越高,Redis 执行定期任务的频率就越高 。
14、
aof-rewrite-incremental-fsync
当子进程进行 AOF 重写时,如果配置成
aof-rewrite-incremental-fsync yes,每生成 4 MB 数据就执行一次 fsync操作,分批提交到硬盘来避免高延迟峰值,推荐开启 。
15、
rdb-save-incremental-fsync
当我在保存 RDB 内存快照文件时,如果配置成 db-save-incremental-fsync yes,每生成 4MB 文件就执行一次 fsync操作,分批提交到硬盘来避免高延迟峰值,推荐开启 。
16、LFU 调优
这个配置生效的前提是内存淘汰策略设置的是 volatile-lfu或allkeys-lfu 。
- lfu-log-factor 用于调整 Logistic Counter 的增长速度,lfu-log-factor 值越大,Logistic Counter 增长越慢 。默认配置 10 。
- 以下是表格是官方不同 factor 配置下,计数器的改变频率 。注意:表格是通过如下命令获得的: redis-benchmark -n 1000000 incr foo redis-cli object freq foo 。
- factor100 hits1000 hits100K hits1M hits10M hits01042552552552551184925525525510101814225525510081149143255
- lfu-decay-time 用于调整 Logistic Counter 的衰减速度,它是一个以分钟为单位的数值,默认值为 1;lfu-decay-time 值越大,衰减越慢 。
MySQL:“什么是在线内存碎片整理?”Active (online) defragmentation 在线内存碎片整理指的是自动压缩内存分配器分配和 Redis 频繁做更新操作、大量过期数据删除,释放的空间(不够连续)无法得到复用的内存空间 。
通常来说当碎片化达到一定程度(查看下面的配置)Redis 会使用 Jemalloc 的特性创建连续的内存空间,并在此内存空间对现有的值进行拷贝,拷贝完成后会释放掉旧的数据 。这个过程会对所有的导致碎片化的 key 以增量的形式进行 。
需要注意的是
- 这个功能默认是关闭的,并且只有在编译 Redis 时使用我们代码中的 Jemalloc 版本才生效 。(这是 Linux 下的默认行为) 。
- 在实际使用中,建议是在 Redis 服务出现较多的内存碎片时启用(内存碎片率大于 1.5),正常情况下尽量保持禁用状态 。
- 如果你需要试验这项特性,可以通过命令 CONFIG SET activefrag yes来启用 。
activefrag yes:内存碎片整理总开关,默认为禁用状态 no 。
active-defrag-ignore-bytes 200mb:内存碎片占用的内存达到 200MB 。
active-defrag-threshold-lower 20:内存碎片的空间占比超过系统分配给 Redis 空间的 20%。
推荐阅读
- 职业教育|热血江湖手游:经典五大职业设定,公测火爆开启,两大门派争霸,谁能成为江湖第一?
- “魔兽”退场 两代玩家告别青春
- 华晨宇|有一种“差距”叫邓紫棋和华晨宇,分手5年后,两人现状天差地别
- 王思聪|王思聪与网红喝下午茶,女方被扒已婚有娃,两人关系引发猜测
- 华晨宇|华晨宇王悦伊高调秀恩爱,两人穿情侣装、戴情侣口罩,细节好浪漫
- 陈乔恩|陈乔恩和Alan晒照秀幸福,甜喊老公老婆示爱,两人越来越有夫妻相
- 林青霞|林青霞邀请作家莫言家中做客,吃水饺喝茅台,两人同龄像隔代人!
- 梦中的那片海|68岁林青霞看京剧,和大师交头接耳显亲密,两位友人都戴千万翡翠
- 王思聪|王思聪带俩美女玩剧本杀,大热天套两件T恤,同回酒店当护花使者
- 李明|女同事请吃饭,喊两位闺蜜一起,吃完准备离开就被服务员拦了下来!
