目录

  • 简介
  • 开头说明
  • INCLUDES
  • NETWORK
    • bind
    • protected-mode
    • port
    • tcp-backlog
    • Unix socket
    • Timeout
    • TCP keepalive
  • GENERAL
    • daemonize
    • supervised
    • PID file
    • loglevel
    • logfile
    • syslog-enabled
    • syslog-ident
    • databases
  • SNAPSHOTTING
    • save
    • stop-writes-on-bgsave-error
    • rdbcompression
    • rdbchecksum
    • dbfilename
    • dir
  • REPLICATION
    • slaveof
    • masterauth
    • slave-serve-stale-data
    • slave-read-only
    • repl-diskless-sync
    • repl-diskless-sync-delay
    • repl-ping-slave-period
    • repl-timeout
    • repl-disable-tcp-nodelay
    • repl-backlog-size
    • repl-backlog-ttl
    • slave-priority
    • min-slaves-to-write与min-slaves-max-lag
  • SECURITY
    • requirepass
    • rename-command
  • LIMIT
    • maxclients
    • maxmemory
      • maxmemory
      • maxmemory-policy
      • maxmemory-samples
  • APPEND ONLY MODE
    • appendonly
    • appendfilename
    • appendfsync
    • no-appendfsync-on-rewrite
    • auto-aof-rewrite-percentage
    • auto-aof-rewrite-min-size
    • aof-load-truncated
  • LUA SCRIPTING
    • lua-time-limit
  • REDIS CLUSTER
    • cluster-enabled
    • cluster-config-file
    • cluster-node-timeout
    • cluster-slave-validity-factor
    • cluster-migration-barrier 1
    • cluster-require-full-coverage
  • SLOW LOG
    • slowlog-log-slower-than
    • slowlog-max-len
  • LATENCY MONITOR
    • latency-monitor-threshold
  • EVENT NOTIFICATION
    • notify-keyspace-events
  • ADVANCED CONFIG
    • Hash配置
      • hash-max-ziplist-entries
      • hash-max-ziplist-value
    • List配置
      • list-max-ziplist-siz
      • list-compress-depth
    • Set配置
      • set-max-intset-entries
    • 有序Set配置
      • zset-max-ziplist-entries
      • zset-max-ziplist-value
    • hll-sparse-max-bytes
    • activerehashing(是否需要再哈希)
    • 客户端输出缓冲的控制项
      • client-output-buffer-limit normal
      • client-output-buffer-limit slave
      • client-output-buffer-limit pubsub
    • hz(频率)
    • aof-rewrite-incremental-fsync(重写aof)
  • 参考地址

简介

启动redis-server时指定应该加载的配置文件,方法如下:

$ ./redis-server /path/to/redis.conf

该文档是基于redis-3.2版本说明的。

开头说明

redis配置中对单位的大小写不敏感,1GB、1Gb、1gB都是相同的。reids单位只支持bytes,不支持bit。

INCLUDES

reids支持“主配置文件中引入外部配置文件”,很像Java中JSP的include命令,比如:

include /path/to/other.conf

注意:如果将此配置写在redis.conf 文件的开头,那么后面的配置会覆盖引入文件的配置,如果想以引入文件的配置为主,那么需要将 include 配置写在 redis.conf 文件的末尾。

NETWORK

bind

bind 127.0.0.1

bind:绑定redis服务器网卡IP,默认为127.0.0.1,即本地回环地址。这样的话,访问redis服务只能通过本机的客户端连接,而无法通过远程连接。如果bind选项为空的话,那会接受所有来自于可用网络接口的连接。

protected-mode

protected-mode yes

redis3.2版本后新增protected-mode配置,默认是yes,即开启。设置外部网络连接redis服务,设置方式如下:
1、关闭protected-mode模式,此时外部网络可以直接访问
2、开启protected-mode保护模式,需配置bind ip或者设置访问密码

port

port 6379

redis运行端口,默认是6379。由于redis是单线程模式,因此单机开多个redis进程时需要修改端口。

tcp-backlog

tcp-backlog 511

此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。该内核参数默认值一般是128,对于负载很大的服务程序来说大大的不够。一般会将它修改为2048或者更大。在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,然后在终端中执行sysctl -p。

Unix socket

 unixsocket /var/run/redis/redis.sockunixsocketperm 700

配置unix socket来让redis支持监听本地连接。
配置unix socket使用文件的权限

Timeout

timeout 0

设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接。默认值为0,表示不关闭。

TCP keepalive

tcp-keepalive 0

表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是300s,如果设置为0,则不会周期性的检测。单位是秒。

GENERAL

daemonize

daemonize no

默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。

supervised

supervised no

可以通过upstart和systemd管理Redis守护进程
选项:

  • supervised no - 没有监督互动
  • supervised upstart - 通过将Redis置于SIGSTOP模式来启动信号
  • supervised systemd - signal systemd将READY = 1写入$ NOTIFY_SOCKET
  • supervised auto - 检测upstart或systemd方法基于 UPSTART_JOB或NOTIFY_SOCKET环境变量

PID file

pidfile /var/redis/run/redis_6379.pid

配置PID文件路径,当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/redis/run/redis_6379.pid 文件里面。

loglevel

loglevel notice

定义日志级别。默认值为notice,有如下4种取值:

  • debug(记录大量日志信息,适用于开发、测试阶段)
  • verbose(较多日志信息)
  • notice(适量日志信息,使用于生产环境)
  • warning(仅有部分重要、关键信息才会被记录)

logfile

logfile /var/redis/log/redis_6379.log

指定了记录日志的文件。空字符串的话,日志会打印到标准输出设备。后台运行的redis标准输出是/dev/null。

syslog-enabled

syslog-enabled no

是否打开记录syslog功能。要想把日志记录到系统日志,就把它改成 yes,也可以可选择性的更新其他的syslog 参数以达到你的要求

syslog-ident

syslog-ident redis

设置系统日志的ID。

databases

databases 16

设置数据库的数目。默认的数据库是DB 0,可以在每个连接上使用select <dbid>命令来选择数据库。dbid介于0到databases-1之间。

SNAPSHOTTING

持久化配置

save

save 900 1
save 300 10
save 60 10000

用来配置触发redis的持久化条件,也就是什么时候将内存中的数据保存到硬盘。默认配置说明:

  • 900 秒内如果至少有 1 个 key 的值变化,则保存
  • 300 秒内如果至少有 10 个 key 的值变化,则保存
  • 60 秒内如果至少有 10000 个 key 的值变化,则保存

注意:
如果只用redis的缓存功能,不需要持久化操作。那么可以注释所有的save行来进行保存功能。可以直接一个空字符串来实现停用:

save ""

stop-writes-on-bgsave-error

stop-writes-on-bgsave-error yes

当RDB持久化出现错误后,是否依然进行工作,yse:不能进行工作,no:可以进行工作。默认情况下,reids会停止接受所有的写的请求(默认值是yes)。
这样做的好处在于可以让用户很明确的指定内存中的数据和硬盘的数据已经不一致了。
如果redis重启了,那么又可以重新接受数据了。

rdbcompression

rdbcompression yes

对于存储到硬盘中的快照,可以设置是否进行压缩存储(默认值yes)。

  • yes:压缩。redis会采用LZF算法进行压缩,需要消耗CPU资源。
  • no:不压缩。需要更多的硬盘空间

rdbchecksum

rdbchecksum yes

是否校验rdb文件(默认值yese)。在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。

dbfilename

dbfilename dump.rdb

rdb的文件名,默认是dump.rdb

dir

dir /var/lib/redis

设置文件的存放路径,这个一定是目录,而不是文件名称。rdb、aof文件都会写入到这个目录。

REPLICATION

redis提供了主从同步功能。

slaveof

slaveof <masterip> <masterport>

通过slaveof配置项可以控制某一个redis作为另一个redis的从服务器,通过指定IP和端口来定位到主redis的位置。一般情况下,我们会建议用户为从redis设置一个不同频率的快照持久化的周期,或者为从redis配置一个不同的服务端口等。

masterauth

masterauth <master-password>

如果主redis设置了验证密码,则从redis的配置中使用masterauth来设置验证密码,否则主redis拒绝访问。

slave-serve-stale-data

slave-serve-stale-data yes

默认值为yes。当一个slave和master失去联系,或者复制正在进行时,slave可能会有两种表现:

  • yes,slave仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候
  • no,在你执行除了info he slaveof之外的其他命令时,slave都将返回一个"SYNC with master in progress"的错误。

slave-read-only

slave-read-only yes

配置redis的Slave是否接受写操作,即Slave是否为只读,默认值是yese

repl-diskless-sync

repl-diskless-sync no

主从数据复制是否使用无硬盘复制功能。
新的从站和重连后不能继续备份的从站,需要做一个所谓的“完全备份”,即将一个RDB文件从主站传送到从站。
传送方式有两种:

  • 硬盘备份:redis主站创建一个新的进程,用于把RDB文件写在硬盘上。过一会儿,其父进程递增地将文件传送给从站。
  • 无硬盘备份:redis主站创建一个新的进程,子进程直接把RDB文件写在从站的套接字,不需要用到硬盘。

在硬盘备份的情况下,主站的子进程生成RDB文件。一旦生成,多个从站可以立即排成队列使用主站的RDB文件。
在无硬盘备份的情况下,一次RDB传送开始,新的从站到达后,需要等待现在的传送结束,才能开启新的传送。

如果使用无硬盘备份,主站会在开始传送之间等待一段时间(可配置,单位是秒),希望等待多个子站到达后并行传送。

repl-diskless-sync-delay

repl-diskless-sync-delay 5

当启用无硬盘备份,服务器等待一段时间后才会通过套接字向从站传送RDB文件,这个等待时间是可配置的。 这一点很重要,因为一旦传送开始,就不可能再为一个新到达的从站服务。从站则要排队等待下一次RDB传送。因此服务器等待一段 时间以期更多的从站到达。延迟时间以秒为单位,默认为5秒。要关掉这一功能,只需将它设置为0秒,传送会立即启动。

repl-ping-slave-period

repl-ping-slave-period 10

从redis会周期性的向主redis发出PING包。默认值是10秒。

repl-timeout

repl-timeout 60

在主从同步时,可能在这些情况下会超时:

  • 以从redis的角度来看,当有大规模的IO传输时。
  • 以从redis的角度来看,当数据传输或PING时,主redis超时。
  • 以主redis的角度来看,在回复从redis的PING时,从redis超时。

用户可以设置上述超时的时限,不过这个时限要确保比repl-ping-slave-period的值要大,否则每次主redis都会认为从redis超时。

repl-disable-tcp-nodelay

repl-disable-tcp-nodelay no

同步之后是否禁用从站上的TCP_NODELAY 如果你选择yes,redis会使用较少量的TCP包和带宽向从站发送数据。但这会导致在从站增加一点数据的延时。 Linux内核默认配置情况下最多40毫秒的延时。如果选择no,从站的数据延时不会那么多,但备份需要的带宽相对较多。默认情况下我们将潜在因素优化,但在高负载情况下或者在主从站都跳的情况下,把它切换为yes是个好主意。默认值为no。

repl-backlog-size

repl-backlog-size 1mb

设置备份的缓冲区大小。当从站断开一段时间的情况时,它替从站接受存储数据,因此当从站重连时,通常不需要完全备份,只需要一个部分同步就可以,即把从站断开时错过的一部分数据接收。

缓冲区越大,从站可以断开并稍后执行部分同步的断开时间就越长。
只要有一个从站连接,就会立即分配一个缓冲区。

repl-backlog-ttl

repl-backlog-ttl 3600

主站有一段时间没有与从站连接,对应的缓冲区就会自动释放。
这个选项用于配置释放前等待的秒数,秒数从断开的那一刻开始计算,值为0表示不释放。

slave-priority

slave-priority 100

我们可以给众多的从redis设置优先级,在主redis持续工作不正常的情况,优先级高的redis会升级为主redis。编号越小,优先级越高。当优先级设置为0,则永远不会被选中。默认的优先级为100。

min-slaves-to-write与min-slaves-max-lag

假如主redis发现有超过M个从redis的连接延时大于N秒,那么主redis就停止接受外来的写请求。这是因为从redis一般会每秒钟都向主redis发出PING,而主redis会记录每一个从redis最近一次发来PING的时间点,所以主redis能够了解每一个从redis的运行情况。

min-slaves-to-write 3
min-slaves-max-lag 10

上面这个例子表示,假如有大于等于3个从redis的连接延迟大于10秒,那么主redis就不再接受外部的写请求。上述两个配置中有一个被置为0,则这个特性将被关闭。默认情况下min-slaves-to-write为0,而min-slaves-max-lag为10。

SECURITY

要求redis客户端在向redis-server发送请求之前,先进行密码验证。当你的redis-server处于一个不太可信的网络环境中时,相信你会用上这个功能。由于redis性能非常高,所以每秒钟可以完成多达15万次的密码尝试,所以你最好设置一个足够复杂的密码,否则很容易被黑客破解。

requirepass

requirepass 123

设置redis的连接密码,上述密码为123

rename-command

命令重命名,对于一些危险命令:

  • flushdb(清空数据库)
  • flushall(清空所有数据)
  • config(客户端连接后可配置服务器)
  • keys(客户端连接后可以查看所有存在的键)

作为redis服务器,常常会禁用以上的命令会使得服务器更加安全,禁用命令如下:

rename-command FLUSHALL ""

也可以保留命令但是不能轻易使用,重命名命令:

rename-command FLUSHALL j893i290ikjf2939223

重启服务器后就可以使用新的命令,否则服务器会报错unknown command。

LIMIT

maxclients

maxclients 10000

设置客户端最大的并发连接数量,默认无限制,redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件。当你无法设置进程文件句柄限制时,redis会设置为当前的文件句柄限制值减去32,因为redis会为自身内部处理逻辑留一些句柄出来。

如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”以作回应。

maxmemory

maxmemory

maxmemory <bytes>

设置redis可以使用的内存量。一旦到达内存使用上限,redis将试图移除内部数据,移除规则可以通过maxmemory-policy来指定。

如果redis无法根据移除规则来移除内存中的数据,或者我们设置了“不允许移除”,那么redis不会在接收写的请求,只会接收git请求。写命令包括:set setnx setex append incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby getset mset msetnx exec sort。

需要注意的一点是,如果你的redis是主redis(说明你的redis有从redis),那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的情况下,才不用考虑这个因素。

maxmemory-policy

maxmemory-policy noeviction

redis提供了6中移除规则:

  • volatile-lru:使用LRU算法移除过期集合中的key
  • allkeys-lru:使用LRU算法移除key
  • volatile-random:在过期集合中移除随机的key
  • allkeys-random:移除随机的key
  • volatile-ttl:移除那些TTL值最小的key,即那些最近才过期的key。
  • noeviction:不进行移除。针对写操作,只是返回错误信息。

无论使用上述哪一种移除规则,如果没有合适的key可以移除的话,redis都会针对写请求返回错误信息。

maxmemory-samples

maxmemory-samples 5

LRU算法和最小TTL算法都并非是精准的算法,而是估算值。所以你可以设置样本的大小。

APPEND ONLY MODE

appendonly

appendonly no

默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了。但是redis如果中途宕机,会导致可能有几分钟的数据丢失,根据save来策略进行持久化,Append Only File是另一种持久化方式, 可以提供更好的持久化特性。Redis会把每次写入的数据在接收后都写入appendonly.aof文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。默认值为no。

appendfilename

appendfilename "appendonly.aof"

aof文件名,默认为"appendonly.aof"。

appendfsync

aof持久化策略配置

appendfsync everysec

持久化策略:

  • no:表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快。
  • always:表示每次写入都执行fsync,以保证数据同步到磁盘。
  • everysec:表示每秒执行一次fsync,可能会导致丢失这1s的数据。

当fsync方式设置为always或everysec时,如果后台持久化进程需要执行一个很大的磁盘IO操作,那么redis可能会在fsync()调用时卡住。

no-appendfsync-on-rewrite

no-appendfsync-on-rewrite no

在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。

auto-aof-rewrite-percentage

auto-aor-rewrite-percentage 100

默认值为100。aof自动重写配置,当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候,Redis能够调用bgrewriteaof对日志文件进行重写。当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程。

如果设置auto-aof-rewrite-percentage为0,则会关闭此重写功能。

auto-aof-rewrite-min-size

auto-aof-rewrite-min-size 64mb

设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写。

aof-load-truncated

aof-load-truncated yes

aof文件可能在尾部是不完整的,当redis启动的时候,aof文件的数据被载入内存。重启可能发生在redis所在的主机操作系统宕机后,尤其在ext4文件系统没有加上data=ordered选项,出现这种现象 redis宕机或者异常终止不会造成尾部不完整现象,可以选择让redis退出,或者导入尽可能多的数据。如果选择的是yes,当截断的aof文件被导入的时候,会自动发布一个log给客户端然后load。如果是no,用户必须手动redis-check-aof修复AOF文件才可以。默认值为 yes。

LUA SCRIPTING

lua-time-limit

lua-time-limit 5000

lua脚本的最大运行时间是需要被严格限制的,单位是毫秒。

如果此值设为0或者负数,则既不会报错也不会有时间限制。

REDIS CLUSTER

cluster-enabled

cluster-enabled yes

集群开关,默认不开启集群模式。

cluster-config-file

cluster-config-file nodes-6379.conf

集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。 这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件。请确保与实例运行的系统中配置文件名称不冲突。默认配置为nodes-6379.conf。

cluster-node-timeout

cluster-node-timeout 15000

可以配置值为15000。节点互连超时的阀值,集群节点超时毫秒数.

cluster-slave-validity-factor

cluster-slave-validity-factor 10

可以配置值为10。在进行故障转移的时候,全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了, 导致数据过于陈旧,这样的slave不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长。判断方法是:比较slave断开连接的时间和(node-timeout * slave-validity-factor) + repl-ping-slave-period 如果节点超时时间为三十秒, 并且slave-validity-factor为10,假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave将不会尝试进行故障转移。

cluster-migration-barrier 1

cluster-migration-barrier 1

可以配置值为1。master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数若被设为2,那么只有当一个主节点拥有2 个可工作的从节点时,它的一个从节点会尝试迁移。

cluster-require-full-coverage

cluster-require-full-coverage yes

默认情况下,集群全部的slot有节点负责,集群状态才为ok,才能提供服务。 设置为no,可以在slot没有全部分配的时候提供服务。不建议打开该配置,这样会造成分区的时候,小分区的master一直在接受写请求,而造成很长时间数据不一致。

SLOW LOG

slog log是用来记录redis运行中执行比较慢的命令耗时。当命令的执行超过了指定时间,就记录在slow log中,slog log保存在内存中,所以没有IO操作。

slowlog-log-slower-than

slowlog-log-slower-than 10000

执行时间比slowlog-log-slower-than大的请求记录到slowlog里面,单位是微秒,所以1000000就是1秒。注意,负数时间会禁用慢查询日志,而0则会强制记录所有命令。

slowlog-max-len

slowlog-max-len 128

慢日志最大长度,可以随便填写数值,没有上限,但要注意它会消耗内存。你可以使用SLOWLOG RESET来重设这个值。

LATENCY MONITOR

延迟监控功能是用来监控redis中执行比较缓慢的一些操作,用LATENCY打印redis实例在跑命令时的耗时图表。

latency-monitor-threshold

latency-monitor-threshold 0

0的话,就是关闭监视。默认延迟监控功能是关闭的,如果你需要打开,也可以通过CONFIG SET命令动态设置。

EVENT NOTIFICATION

使得客户端可以通过订阅频道或模式,来接收那些以某种方式改动了 Redis 数据集的事件。因为开启键空间通知功能需要消耗一些 CPU ,所以在默认配置下,该功能处于关闭状态。

notify-keyspace-events

notify-keyspace-events ""

notify-keyspace-events 的参数可以是以下字符的任意组合,它指定了服务器该发送哪些类型的通知:

  • K 键空间通知,所有通知以 __keyspace@__ 为前缀
  • E 键事件通知,所有通知以 __keyevent@__ 为前缀
  • g DEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知
  • $ 字符串命令的通知
  • l 列表命令的通知
  • s 集合命令的通知
  • h 哈希命令的通知
  • z 有序集合命令的通知
  • x 过期事件:每当有过期键被删除时发送
  • e 驱逐(evict)事件:每当有键因为 maxmemory 政策而被删除时发送
  • A 参数 g$lshzxe 的别名

输入的参数中至少要有一个 K 或者 E,否则的话,不管其余的参数是什么,都不会有任何通知被分发。

ADVANCED CONFIG

Hash配置

hash-max-ziplist-entries

hash-max-ziplist-entries 512

hash类型的数据结构在编码上可以使用ziplist和hashtable。
ziplist的特点就是文件存储(以及内存存储)所需的空间较小,在内容较小时,性能和hashtable几乎一样。
因此redis对hash类型默认采取ziplist。如果hash中条目的条目个数或者value长度达到阀值,将会被重构为hashtable。
这个参数指的是ziplist中允许存储的最大条目个数,,默认为512,建议为128

hash-max-ziplist-value

hash-max-ziplist-value 64

ziplist中允许条目value值最大字节数,默认为64,建议为1024

List配置

list-max-ziplist-siz

list-max-ziplist-size -2

当取正值的时候,表示按照数据项个数来限定每个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-compress-depth

list-compress-depth 0

这个参数表示一个quicklist两端不被压缩的节点个数。
注:这里的节点个数是指quicklist双向链表的节点个数,而不是指ziplist里面的数据项个数。
实际上,一个quicklist节点上的ziplist,如果被压缩,就是整体被压缩的。
参数list-compress-depth的取值含义如下:

  • 0: 是个特殊值,表示都不压缩。这是Redis的默认值。
  • 1: 表示quicklist两端各有1个节点不压缩,中间的节点压缩。
  • 2: 表示quicklist两端各有2个节点不压缩,中间的节点压缩。
  • 3: 表示quicklist两端各有3个节点不压缩,中间的节点压缩。
    依此类推…

由于0是个特殊值,很容易看出quicklist的头节点和尾节点总是不被压缩的,以便于在表的两端进行快速存取。

Set配置

set-max-intset-entries

set-max-intset-entries 512

数据量小于等于set-max-intset-entries用intset,大于set-max-intset-entries用set

有序Set配置

zset-max-ziplist-entries

zset-max-ziplist-entries 128

数据量小于等于zset-max-ziplist-entries用ziplist,大于zset-max-ziplist-entries用zset

zset-max-ziplist-value

zset-max-ziplist-value 64

ziplist中允许条目value值最大字节数,默认为64。

hll-sparse-max-bytes

hll-sparse-max-bytes 3000

value大小小于等于hll-sparse-max-bytes使用稀疏数据结构(sparse),大于hll-sparse-max-bytes使用稠密的数据结构(dense)。一个比16000大的value是几乎没用的,建议的value大概为3000。如果对CPU要求不高,对空间要求较高的,建议设置到10000左右。

activerehashing(是否需要再哈希)

activerehashing yes

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

客户端输出缓冲的控制项

对客户端输出缓冲进行限制可以强迫那些不从服务器读取数据的客户端断开连接,用来强制关闭传输缓慢的客户端。

client-output-buffer-limit normal

 client-output-buffer-limit normal 0 0 0

对于normal client,第一个0表示取消hard limit,第二个0和第三个0表示取消soft limit,normal client默认取消限制,因为如果没有寻问,他们是不会接收数据的。

client-output-buffer-limit slave

client-output-buffer-limit slave 256mb 64mb 60

对于slave client和MONITER client,如果client-output-buffer一旦超过256mb,又或者超过64mb持续60秒,那么服务器就会立即断开客户端连接。

client-output-buffer-limit pubsub

client-output-buffer-limit pubsub 32mb 8mb 60

对于slave client和MONITER client,如果client-output-buffer一旦超过256mb,又或者超过64mb持续60秒,那么服务器就会立即断开客户端连接。

hz(频率)

hz 10

redis执行任务的频率为1s除以hz

aof-rewrite-incremental-fsync(重写aof)

aof-rewrite-incremental-fsync yes

在aof重写的时候,如果打开了aof-rewrite-incremental-fsync开关,系统会每32MB执行一次fsync。
这对于把文件写入磁盘是有帮助的,可以避免过大的延迟峰值

参考地址

https://www.cnblogs.com/pqchao/p/6558688.html
https://www.cnblogs.com/metu/p/9609604.html
https://www.cnblogs.com/ysocean/p/9074787.html#_label0
https://mp.weixin.qq.com/s?__biz=MzA5MzQ2NTY0OA==&mid=2650796336&idx=1&sn=7ecd39f47fe5a35cbb922fe823640aae&chksm=88562c6fbf21a5798b16d43f726a2394cdd12e042c4357cd584fd83e3e6e13eec10b30f5d566&mpshare=1&scene=1&srcid=1001D0L643UNm9TuvDG0NSMt&pass_ticket=QRj3c3fe9lSk8WVW1On7YHi3%2B9PZ6fwFH7Vlvy%2FuyvNb9hXeJphbWSDHyNsLth1T#rd

Redis学习笔记(四):配置文件详细说明(redis-3.2)相关推荐

  1. Redis学习笔记(二) [配置文件,3种新的数据类型,Jedis操作]

    近期计划对redis再进行一段详细的学习, 在B站找到了尚硅谷的redis教学视频->[尚硅谷]Redis 6 入门到精通 超详细 教程,进行学习记录 文章目录

  2. Redis学习笔记(B站狂神说)(自己总结方便复习)

    Redis学习笔记B站狂神说 redis: 非关系型数据库 一.NoSQL概述 1.为什么要用Nosql 1.单机Mysql的年代 思考一下,这种情况下:整个网站的瓶颈是什么? 1.数据量如果太大,一 ...

  3. Redis学习笔记①基础篇_Redis快速入门

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  4. StackExchange.Redis学习笔记(五) 发布和订阅

    StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...

  5. Redis学习笔记(八)redis之lua脚本学习

    redis系列文章目录 使用spring-data-redis实现incr自增 Redis 利用Hash存储节约内存 Redis学习笔记(九)redis实现时时直播列表缓存,支持分页[热点数据存储] ...

  6. Redis学习笔记(五)——持久化及redis.conf配置文件叙述

    对于日常使用来说,学习完SpringBoot集成Redis就够我们工作中使用了,但是既然学习了,我们就学习一些Redis的配置及概念,使我们可以更深层次的理解Redis,以及增强我们的面试成功概率,接 ...

  7. Redis学习笔记②实战篇_黑马点评项目

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 资料链接:https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA( ...

  8. Redis(学习笔记)

    Redis学习笔记 1.NoSQL数据库 1.1解决的问题 1.1.1解决CPU及内存压力 1.1.2解决IO压力 1.2NoSQL数据库概述 1.2.1什么是NoSQL数据库 1.2.2适用与不适用 ...

  9. Redis 学习笔记八:集群模式

    Redis 学习笔记八:集群模式 作者:Grey 原文地址: 博客园:Redis 学习笔记八:集群模式 CSDN:Redis 学习笔记八:集群模式 前面提到的Redis 学习笔记七:主从复制和哨兵只能 ...

最新文章

  1. ServletContext 与application的异同
  2. 修改类的命名空间引发的发布问题
  3. 第1章 ZLG7290B 简介
  4. vue 利用hash值实现刷新无跳转页面
  5. 希尔排序--Java
  6. PPT模板(淘宝花钱买来的,免费分享给大家)
  7. 10突然只剩下c盘和d盘了_科普:为什么软件不能装C盘?会卡!这是真的吗?
  8. 【leetcode】【动态规划】股票买卖
  9. Opensturt和Struct区别
  10. 照片放大不清晰怎么处理?用嗨格式图片无损放大器
  11. 高等数学基础:求导总结
  12. GIS地图怎么做?看这篇就够了
  13. LWC 71: 780. Reaching Points
  14. 微信小程序【网易云音乐实战】(第三篇 自定义组件、排行榜的制作、内网穿透、tabBar、个人中心)
  15. 《番茄todo》APP广告的设计与制作
  16. 绕过限制低价购买和增删低价购买逻辑漏洞
  17. 使用HSL连接欧姆龙PLC配置
  18. 万年历的Java代码
  19. 设置mysql时间戳默认值(TIMESTAMP)
  20. 【linux deploy】安卓手机安装linux(ubuntu) 提供各种工具安装链接

热门文章

  1. 怎么把静态图片做成动态图?简单三步让图片动起来
  2. Linux 之 zsh
  3. 有关HTTP2.0详解
  4. ASP.NET企业HR人力资源管理系统源码(带使用手册和操作说明)
  5. C语言与Java的异同
  6. 低功耗蓝牙(BLE)-- advertisements广播篇
  7. linux ext4 img解包打包教程,安卓解包、修改、打包system.img/system.img.ext4教程
  8. sg-uap的安装配置
  9. CCF认证-201812-2-小明放学(C语言实现)
  10. 为什么有些人除了上课时间以外都没有学习,成绩却还是很好?