Redis 安装手册
简介
Redis是一个开源的、分布式的基于内存的数据结构化存储,常被用作内存数据库,消息缓存和代理。它支持数据结构,如字符串、哈希、列表、集合、带范围查询的排序集合、位图、超日志、带半径查询的地理空间索引和流。Redis具有内置的复制、Lua脚本、LRU逐出、事务和不同级别的磁盘持久性,并通过Redis Sentinel和带有Redis集群的自动分区提供高可用性
安装部署
-
本文档以5.0.7为例进行示例操作。可选择其它版本:【地址】https://redis.io/download
-
在CentOS-1810上进行部署,续集地址为:192.168.106.128
-
操作用户为【root】
安装步骤
- 下载5.0.7安装包
http://download.redis.io/releases/redis-5.0.7.tar.gz
-
上传下载的【redis-5.0.7.tar.gz】到【/cloud/soft】
-
解压【redis-5.0.7.tar.gz】
# chmod +x redis-5.0.7.tar.gz
# tar -zxvf redis-5.0.7.tar.gz
- 编译安装
# cd /cloud/soft/redis-5.0.7
# make
# make install
服务验证
- 启动服务
# cd /cloud/soft/redis-5.0.7
# redis-server
备注:其实在任意目录都可以执行:redis-server命令
- 存储数据
* 打开新的ssh连接
# cd /cloud/soft/redis-5.0.7
# redis-cli
# set foo bar
备注:【set foo bar】 返回OK表示成功
到此为止redis 5.0.7 单机版部署成功。
配置文件
-
redis不需要配置文件,仍然可以启动。其实redis使用的是内置的默认配置项,不建议在生产环境使用默认的配置项,因此,我们在此对redis的配置项进行说明,便于大家根据自己的实际情况调整redis的配置信息,不仅做到调整配置,还能做到为什么这么配置。
-
redis的配置是以:keyword argument1 argument2 ... argumentN
-
先针对常用的redis配置项进行说明,然后再给出一些高级配置项的说明,最后展示一个样例配置文件。
常用配置项
- include /path/to/local.conf
表示引入local.conf,可以在local.conf中设置一些公共的配置项,或者将local.conf作为模板配置文件引入
- bind 192.168.106.128
redis服务绑定的网络接口,redis服务会监听来自这些接口的信息,可以跟多个ip地址,用空格分开,也可以有多个bind指令,分行显示
bind 127.0.0.1 ::1 表示监听本地loopback,如果运行在internet,强烈建议配置bind指令,不配置表示监听所有网络接口
- port 6379
redis服务监听端口,如果设置为:0,redis服务不监听tcp连接
- timeout 0
客户端idle 超时关闭时间,0:不启用(单位:秒)
- tcp-keepalive 300
在没有通信的情况下redis用SO_KEEPALIVE 发送 TCP ACKs 给客户端的时间间隔。用于检测 客户端是否已经死掉;从中间网络设备的视角判断连接是否存活
从3.2.1开始启用,合理值建议为:300 (单位:秒)
- daemonize no
是否启用守护进程,即后台运行,默认为:不启用;
- pidfile /var/run/redis.pid
redis 采用daemonized 模式启动时,生成一个pid文件,pid文件默认位置为:/var/run/redis.pid,用户可以指定,启动时生成,退出时删除,创建失败,redis也能正常启动。
# If a pid file is specified, Redis writes it where specified at startup
- loglevel notice
指定服务器详细信息级别:debug,verbose,notice(建议生产环境配置),warning
- logfile ""
日志存放文件,如果为空字符串,则发送到标准输出,如果是daemonized模式,则发送到:/dev/null
- databases 16
数据库数量,默认使用的数据库为:0;可以选择不同的数据库:在连接时使用:SELECT <DBID>,DBID是0到 {databases}-1 之间的数
- save
保存DB到磁盘的策略,注释所有的save行,表示禁用保存功能;通过设置:save "" 表示清除前面保存的所有信息
* save 900 1 900秒至少有一个key改变
* save 300 10 300秒至少10个keys修改
* save 60 10000 60秒至少10000个keys修改
- maxclients 10000
同时可连接的最大客户端数,默认值为:10000,达到最大后,redis将会关闭新连接,病发送:max number of clients reached 错误信息。
- maxmemory
设置最多可以使用的内存大小
- maxmemory-policy noeviction
达到最大使用内存时,采取的行为:默认为:不删除任何数据,只返回错误。
- maxmemory-samples 5
LRU,LFU 以及最小TTL算法时,不是精确的算法,时概率算法。默认redis检测5个key,挑出最近最少使用的。可以修改此值。
5个有较好的结果,10个接近于lru,但消耗更多cpu,3更快但更不精确。
- appendonly no
是否启用aof功能,aof和rdb可以同时写
- appendfilename "appendonly.aof"
aof文件的名字
高级选项
-
slaveof 192.168.106.128 6380
-
loadmodule /path/to/my_module.so
加载模块
- protected-mode yes
如果保护模式打开,并且:没有bind指令,也没设置密码,那么redis服务只会接受: IPv4 和 IPv6 loopback addresses 127.0.0.1 和 ::1, 以及 Unix domain Sockets的客户端连接
默认:yes,如果想让其它主机能连接,需要禁用此选项,即设置为:no
- tcp-backlog 511
此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定
- unixsocket /tmp/redis.sock
unix socket 的路径,没有默认值,因此redis默认不启用unix socket
- supervised no
# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
# supervised no - no supervision interaction
# supervised upstart - signal upstart by putting Redis into SIGSTOP mode
# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
# supervised auto - detect upstart or systemd method based on
# UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
# They do not enable continuous liveness pings back to your supervisor.
- syslog-enabled no
将日志写到系统logger标记,no:表示不启用
- syslog-ident redis
指定syslog身份标识符,在启用syslog-enabled后可用
- syslog-facility local0
指定syslog工具,必须是:USER或者在LOCAL0-LOCAL7之间
- always-show-logo yes
默认redis真是ASII格式的艺术logo(tty方式的标准输出)。设置为yes在启动日志也可展示
- stop-writes-on-bgsave-error yes
默认情况下,如果启用了RDB快照,并且最新的后台保存失败,则Redis将停止接受写入。这可以使用户知道数据没有持久化到磁盘。否则可能会引发灾难。如果后台进程又工作正常,则redis将会自动允许写入。
- rdbcompression yes
当dump .db数据库的时候,使用LZF对string对象进行压缩。
- rdbcompression yes
从RDB 的version 5 开始,会在文件末尾放CRC64 checksum。这可以使格式more resistant to corruption,但也带来性能损耗(10%)
- dbfilename dump.rdb
dump 数据库的文件名
- dir ./
dbfilename的目录,append only file也会创建在这个目录下
- replicaof
master-replica 异步,可以配置为:如果发现m-r之间至少有被给数量的replica不连接,停止接收写
- masterauth
如果master使用密码保护(指令:requirepass),replica在开始复制前要先进行身份验证,否则master拒绝replica
- replica-serve-stale-data yes
replica和master失去连接后的两种处理方式:yes:继续响应客户端请求,数据和master不一致;no:对所有指令返回错误(SYNC with master in progress),除了如下指令:
INFO,replicaOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE CONFIG,SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, COMMAND, POST, HOST: 以及 LATENCY
- replica-read-only yes
副本只能读,从2.6开始:默认redis副本只读
- repl-diskless-sync no
新replicas加入,master复制rdb文件有两种方式:1. Disk-backed master启动新进程写rdb 文件到磁盘,然后父进程将rdb文件增量发送给replicas;2. Diskless:master创建新进程直接发送rdb文件给replicas sockets,根本不在本地磁盘创建文件。
如果多个副本,多个副本并行传输,满磁盘快网络,适合用diskless方式。diskless在5.0.7版本中为实验功能
- repl-diskless-sync-delay 5
采用无盘复制时,可以配置服务器等待的延迟,以便生成通过socket将RDB传输到副本;一旦开始传输,不会再服务新到达的replicas,直到结束传输。默认:5 (单位:秒)
- repl-ping-replica-period 10
replica 想server发送pings的间隔,默认:10 (单位:秒)
- repl-timeout 60
replica 同步信息超时时间,此值要大于:repl-ping-replica-period,超时的视角:1. replica:大量的I/O传输;2. replica:master超时;3. replica
- repl-disable-tcp-nodelay no
设置为yes:tcp传输使用最小的包,尽量少的带宽,replica侧的数据与master会有延迟;设置为:no 延迟变小,单占用更多的带宽
- repl-backlog-size 1mb
设置replication的backlog大小,当replica偶尔断链并重连接时,同步数据不需要全部同步,只需要部分重新同步即可,这个就是部分同步要同步的buffer大小。
- repl-backlog-ttl 3600
master 断连释放backlog空间的超时时间,最后一个replica断连算起,如果值为0表示从不释放,如果是replicas超时不释放,有可能replica成为master;单位:秒
- replica-priority 100
redis sentinel选择master的策略,数值越小,选为master的优先级越高,如果为0,表示从来不会选为master
- min-replicas-to-write 3
- min-replicas-max-lag 10
两个值一起用:表示在指定的lag(秒)至少要有min-replicas-to-write 个replicas连接着master(ping),否则master停止接受写操作,如果min-replicas-max-lag 为0,禁用此功能
在发生failover时,特别有用,防止继续向旧的master写数据,导致数据永远丢失
- replica-announce-ip 5.5.5.5
- replica-announce-port 1234
如果设置如上的两个参数,replica将会把如上的ip和port并暴露出去,通过INFO replication,以及master上的ROLE看到的就是这个IP和端口,
常用于:端口转发和NAT场景下,对master暴露自己的真是IP和端口
- requirepass foobared
在客户端进行任何操作之前,先验证密码,此处密码为:foobared
- rename-command
指令重命名,可以通过:rename-command CONFIG "" 将CONFIG指令kill
- replica-ignore-maxmemory yes
从redis 5,默认replica 忽略最大内存限制设置,这意味着只有master会删除keys
- lazyfree-lazy-eviction no
当内存达到maxmemory,要驱逐key的时候,是否阻塞其它命令。
- lazyfree-lazy-expire no
当key过期时间到,要进行驱逐时,是否阻塞其它命令。
- lazyfree-lazy-server-del no
当重命名或者覆盖key值时,是否阻塞其它命令
- replica-lazy-flush no
当重新同步master的信息时,需要删除rdb文件,重新从master拉取,是否采用阻塞方式执行(阻塞其它命令)。
- appendfsync always
redis 调用fsync()写磁盘的三种模式:
no: 不fsync,让os决定什么时候flush数据到磁盘,快;
always:只要redis有写操作就fsync到aof,慢,安全;
everysec:没瞄准fsync一次;
默认为:everysec
- no-appendfsync-on-rewrite no
AOF fsync 策略设置为always或者everysec时,后台进程会消耗大量的I/O性能。在fsync调用上回占用大量的时间。甚至阻塞其它县城的同步write调用。
使用此选项可以防止在BGSAVE或者BGREWRITEAOF 执行时主进程调用fsync。如果有延迟问题,设置为:yes;否则设置为:no,从持久性的角度看,这是最安全的。
- auto-aof-rewrite-percentage 100
- auto-aof-rewrite-min-size 64mb
重写策略参数:当前文件比上次重写后增加 auto-aof-rewrite-percentage 的比例后再开始重写,如果刚启动,则采用初始aof文件为上次重写文件;如果aof文件小于auto-aof-rewrite-min-size,则不触发重写;如果auto-aof-rewrite-percentage设置为:0,则禁用自动重写功能
- aof-load-truncated yes
redis启动时是否能支持加载损坏了的aof文件(在结尾被阶段,不完整),如果设置为:yes,redis加载尽可能多的数据,并将错误信息通知用户;如果设置为:no,redis决绝启动,需要用户通过:redis-check-aof 修复aof文件
- aof-use-rdb-preamble yes
启用aof文件带rdb前导功能,在重写aof文件是时,文件会是如下格式:
[RDB file][AOF tail]
这能提供更快的重写和加载能力,在加载时先加载RDB文件再加载AOF tail
- lua-time-limit 5000
lua脚本执行超时时间,如果为0或者负数,不限制;如果超过最大时间,redis会对查询请求返回错误; 两个命令:SCRIPT KILL 和 SHUTDOWN NOSAVE可以用于杀掉脚本和关闭服务。
- cluster-enabled yes
作为redis cluster的node,不使用此选项不能作为redis集群的实例
- cluster-config-file nodes-6379.conf
redis集群配置文件,由集群自动创建,最好不要手工编辑,集群会自动调整
- cluster-node-timeout 15000
集群节点认为不可达的超时时间,单位:毫秒
- cluster-replica-validity-factor 10
故障转移因子,当replica与master的交互超过:
(node-timeout * replica-validity-factor) + repl-ping-replica-period
时,replica进行故障转移,此值太大,会导致replica与master的数据相差比较多,replica的数据太老。0是唯一能够保证当所有分区恢复时群集始终能够继续的值
- cluster-migration-barrier 1
replica 迁移为孤儿master的条件:当master有(cluster-migration-barrier)+1 个副本时,支持replica迁移为孤儿master,设置为:0,不建议生产使用,禁用此功能:可以将值设的超级大
- cluster-require-full-coverage yes
* 当cluster-require-full-coverage为yes时,表示当负责一个插槽的主库下线且没有相应的从库进行故障恢复时,集群不可用
* 当cluster-require-full-coverage为no时,表示当负责一个插槽的主库下线且没有相应的从库进行故障恢复时,集群仍然可用
- cluster-replica-no-failover no
设置为yes,master故障,replica不做故障转移;但仍然可以手工做故障转移
设置为no,master故障,replica转换为master
- cluster-announce-ip 10.1.1.5
- cluster-announce-port 6379
- cluster-announce-bus-port 6380
做地址和端口映射的时候,可以通过如上三个参数把redis的真实地址提供出去,让客户端进行连接,他别时在docker化redis之后,端口映射比较有用
- slowlog-log-slower-than 10000
超过此事件的查询,称作慢日志查询,单位:微妙
- slowlog-max-len 128
慢日志队列大小,超过的,删除最老的,单位:条数,通过SLOWLOG RESET命令重设大小
- latency-monitor-threshold 0
redis延时监控系统在运行时会采样一些操作,以便收集可能导致延时的数据根源。
通过 LATENCY命令 可以打印一些图样和获取一些报告,方便监控
这个系统仅仅记录那个执行时间大于或等于预定时间(毫秒)的操作,
这个预定时间是通过latency-monitor-threshold配置来指定的,
当设置为0时,这个监控系统处于停止状态
CONFIG SET latency-monitor-threshold <milliseconds>
- notify-keyspace-events Elg
过期事件通知,如果为"" 表示禁用
K 键空间通知,以__keyspace@<db>__为前缀 db为:0-15
E 键事件通知,以__keysevent@<db>__为前缀 db为:0-15
g del , expipre , rename 等类型无关的通用命令的通知, ...
$ String命令
l List命令
s Set命令
h Hash命令
z 有序集合命令
x 过期事件(每次key过期时生成)
e 驱逐事件(当key在内存满了被清除时生成)
A g$lshzxe的别名,因此”AKE”意味着所有的事件
- hash-max-ziplist-entries 512
- hash-max-ziplist-value 64
如果hash中字段的数量小于hash-max-ziplist-entries参数值,Redis将对该Key的Hash Value采用特殊编码
如果hash中各个字段的最大长度不超过hash-max-ziplist-value字节,Redis也将对该Key的Hash Value采用特殊编码方式
优化存储结构,以便占用更少的空间,在有些情况下,可以省去9/10的空间
- list-max-ziplist-size -2
取正值表示quicklist包含的数据项,取负值表示按照占用字节来限定quicklist节点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
list设计最容易被访问的是列表两端的数据,中间的访问频率很低,如果符合这个场景,list使用此配置项,进一步节省内存,压缩算法:LZF
0:表示都不压缩,默认值;
1:表示quicklist两端各有1各节点不压缩,中间的节点压缩;
2:表示quicklist两端各有2个节点不压缩,中间的节点压缩
3:表示quicklist两端各有3个节点不压缩,中间的节点压缩
依次类推
- set-max-intset-entries 512
当set集合内的数据符合以下条件时,会使用intset编码:
1. 当集合内所有数据都是字符对象
2. 都是基数为10的整数,范围为64位有符号整数
- zset-max-ziplist-entries 128
- zset-max-ziplist-value 64
有序的sets在满足以上条件时,也采用特殊的编码以节省内存空间,ziplist编码
键值对数量小于:zset-max-ziplist-entries
键值对的键和值的字符串长度的字节数都小于:zset-max-ziplist-value
- hll-sparse-max-bytes 3000
value大小小于hll-sparse-max-bytes使用稀疏数据结构,大于hll-sparse-max-bytes 使用稠密的数据结构
建议值为:3000,如果对cpu要求不高,对空间要求较高,建议设置到10000左右
- stream-node-max-bytes 4096
- stream-node-max-entries 100
stream-node-max-bytes 单位Byte,默认值为4096,每个宏节点占用的内存容量上限为4096Bytes。0:表示无限制
stream-node-max-entries 每个宏节点存储的stream条目,0:表示无限制,如果一个宏节点中存储的stream条目数达到上限时,新添加的条目将储存到新的宏节点中
stream是redis5.0版本新增的数据类型。是一些由基数树(Radix tree)连接在一起的节点经过delta压缩后构成的。
- activerehashing yes
是否重新设置hash表,设置成yes:每100毫秒用1毫秒cpu事件来对redis的hash表重新hash,可降低内存的使用,当使用场景有较为严格的实时性需求,不能接受redis时不时的对请求有2毫秒的延迟的话,把这个配置项设置为:no。
- client-output-buffer-limit normal 0 0 0
通过设置client-output-buffer-limit 将待接受数据超过缓冲区大小的客户端断开
客户端的设置有三类:
normal:常规的客户端,包括MONITOR
replica:replica客户端,也就是集群的replica(不是连接replica的客户端,是指主从复制)
pubsub:订阅至少一个个pubsub channel或者pattern的客户端
语法 client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
如果客户端输出缓冲区大小达到了“hard limit" 服务器立即断开连接
如果客户端输出缓冲区大小达到了“soft limit”,且持续时间达到了“soft seconds”,服务器理解断开连接
默认情况下普通的客户端不限制
可以通过设置为:0 禁止掉
- client-query-buffer-limit 1gb
每个client都有一个query buffer,用于保存客户端的发送命令,redis server从query buffer获取命令并执行
- proto-max-bulk-len 512mb
批量请求的大小限制
- hz 10
在空闲时,redis使用cpu来执行后台任务的一个参数,值越大,消耗的cpu就会越高,范围:1-500,但超过100不建议。
可以执行的后台任务例如:关闭超时的客户端,主动清理过期的key
- dynamic-hz yes
支持动态调整hz的值,在5.0或以上版本中新增支持
- aof-rewrite-incremental-fsync yes
当一个子节点重写aof文件时,如果启用此选项,则文件每生成32M数据进行同步
- rdb-save-incremental-fsync yes
redis 保存RDB文件的规则,5.0支持此选项,降低save的影响,启用此选项,会在每生成32M数据同步一次磁盘
- lfu-log-factor 10
- lfu-decay-time 1
lfu算法的两个参数,具体可参见redis的lfu算法
- activedefrag yes
启用碎片整理功能,此功能属于实验阶段,默认不启用
- active-defrag-ignore-bytes 100mb
浪费的碎片空间达到active-defrag-ignore-bytes时,开始碎片整理
- active-defrag-threshold-lower 10
启动活动碎片整理的最小碎片百分比
- active-defrag-threshold-upper 100
# 内存碎片超过100%,尽最大努力整理
- active-defrag-cycle-min 5
# 整理碎片占用资源最小百分比
- active-defrag-cycle-max 75
# 整理碎片占用资源最大百分比
- active-defrag-max-scan-fields 1000
# 将从主字典扫描处理的 set/hash/zset/list 字段的最大数目
样例配置文件
- 文件名:【redis.conf】
- 文件内容
# 启动reids时,如果要跟配置文件,必须把配置文件作为第一个参数
# ./redis-server /path/to/redis.conf
# 设定内存的格式如下:
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# 单位不区分大小写: 1GB 1Gb 1gB,表示同一个意思
################################## INCLUDES ###################################
include /cloud/soft/redis-common.conf
include /cloud/soft/redis-dev.conf
################################## 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
# loadmodule /path/to/other_module.so
################################## NETWORK #####################################
bind 192.168.106.128
protected-mode yes
port 6379
tcp-backlog 128
timeout 0
tcp-keepalive 300
################################# GENERAL #####################################
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 16
always-show-logo yes
################################ SNAPSHOTTING ################################
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
################################# REPLICATION #################################
# repl-timeout 60
# repl-disable-tcp-nodelay no
# repl-backlog-size 1mb
# repl-backlog-ttl 3600
replica-priority 100
# min-replicas-to-write 3
# min-replicas-max-lag 10
# replica-announce-ip 5.5.5.5
# replica-announce-port 1234
################################## SECURITY ###################################
# requirepass foobared
# rename-command CONFIG ""
################################### CLIENTS ####################################
maxclients 10000
############################## MEMORY MANAGEMENT ################################
# maxmemory <bytes>
# maxmemory-policy noeviction
# maxmemory-samples 5
# replica-ignore-maxmemory yes
############################# LAZY FREEING ####################################
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
############################## APPEND ONLY MODE ###############################
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
# appendfsync no
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
################################ LUA SCRIPTING ###############################
lua-time-limit 5000
################################ REDIS CLUSTER ###############################
# cluster-enabled yes
# cluster-config-file nodes-6379.conf
# cluster-node-timeout 15000
# cluster-replica-validity-factor 10
# cluster-migration-barrier 1
# cluster-require-full-coverage yes
# cluster-replica-no-failover no
########################## CLUSTER DOCKER/NAT support ########################
################################## SLOW LOG ###################################
slowlog-log-slower-than 10000
slowlog-max-len 128
################################ LATENCY MONITOR ##############################
latency-monitor-threshold 0
############################# EVENT NOTIFICATION ##############################
notify-keyspace-events ""
############################### ADVANCED CONFIG ###############################
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
# client-query-buffer-limit 1gb
# proto-max-bulk-len 512mb
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
# lfu-log-factor 10
# lfu-decay-time 1
########################### ACTIVE DEFRAGMENTATION #######################
# activedefrag yes
# active-defrag-ignore-bytes 100mb
# active-defrag-threshold-lower 10
# active-defrag-threshold-upper 100
# active-defrag-cycle-min 5
# active-defrag-cycle-max 75
# active-defrag-max-scan-fields 1000