Redis 的配置文件一般位于安装目录下,默认文件名为 redis.conf;如果是在 Windows 系统中,对应的配置文件名通常为 redis.windows.conf。

你可以通过 CONFIG 命令查看、查询或动态设置 Redis 配置项。
语法
Redis 的 CONFIG 命令语法格式如下:
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
实例
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
使用 * 通配符可以获取当前 Redis 的全部配置项:
实例
redis 127.0.0.1:6379> CONFIG GET *
1) "dbfilename"
2) "dump.rdb"
3) "requirepass"
4) ""
5) "masterauth"
6) ""
7) "unixsocket"
8) ""
9) "logfile"
10) ""
11) "pidfile"
12) "/var/run/redis.pid"
13) "maxmemory"
14) "0"
15) "maxmemory-samples"
16) "3"
17) "timeout"
18) "0"
19) "tcp-keepalive"
20) "0"
21) "auto-aof-rewrite-percentage"
22) "100"
23) "auto-aof-rewrite-min-size"
24) "67108864"
25) "hash-max-ziplist-entries"
26) "512"
27) "hash-max-ziplist-value"
28) "64"
29) "list-max-ziplist-entries"
30) "512"
31) "list-max-ziplist-value"
32) "64"
33) "set-max-intset-entries"
34) "512"
35) "zset-max-ziplist-entries"
36) "128"
37) "zset-max-ziplist-value"
38) "64"
39) "hll-sparse-max-bytes"
40) "3000"
41) "lua-time-limit"
42) "5000"
43) "slowlog-log-slower-than"
44) "10000"
45) "latency-monitor-threshold"
46) "0"
47) "slowlog-max-len"
48) "128"
49) "port"
50) "6379"
51) "tcp-backlog"
52) "511"
53) "databases"
54) "16"
55) "repl-ping-sla ve-period"
56) "10"
57) "repl-timeout"
58) "60"
59) "repl-backlog-size"
60) "1048576"
61) "repl-backlog-ttl"
62) "3600"
63) "maxclients"
64) "4064"
65) "watchdog-period"
66) "0"
67) "sla ve-priority"
68) "100"
69) "min-sla ves-to-write"
70) "0"
71) "min-sla ves-max-lag"
72) "10"
73) "hz"
74) "10"
75) "no-appendfsync-on-rewrite"
76) "no"
77) "sla ve-serve-stale-data"
78) "yes"
79) "sla ve-read-only"
80) "yes"
81) "stop-writes-on-bgsa ve-error"
82) "yes"
83) "daemonize"
84) "no"
85) "rdbcompression"
86) "yes"
87) "rdbchecksum"
88) "yes"
89) "activerehashing"
90) "yes"
91) "repl-disable-tcp-nodelay"
92) "no"
93) "aof-rewrite-incremental-fsync"
94) "yes"
95) "appendonly"
96) "no"
97) "dir"
98) "/home/deepak/Downloads/redis-2.8.13/src"
99) "maxmemory-policy"
100) "volatile-lru"
101) "appendfsync"
102) "everysec"
103) "sa ve"
104) "3600 1 300 100 60 10000"
105) "loglevel"
106) "notice"
107) "client-output-buffer-limit"
108) "normal 0 0 0 sla ve 268435456 67108864 60 pubsub 33554432 8388608 60"
109) "unixsocketperm"
110) "0"
111) "sla veof"
112) ""
113) "notify-keyspace-events"
114) ""
115) "bind"
116) ""
编辑配置
你既可以直接修改 redis.conf 配置文件,也可以使用 CONFIG set 命令在线修改 Redis 配置参数。
语法
CONFIG SET 命令的基本语法如下:
redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
实例
redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
参数说明
下面是 redis.conf 中常见配置项的说明:
| 序号 | 配置项 | 说明 |
|---|---|---|
| 1 | |
Redis 默认不会以守护进程方式运行,可以通过该配置项进行修改,设置为 yes 即可启用守护进程模式(Windows 不支持守护线程,因此该配置通常为 no) |
| 2 | |
当 Redis 以守护进程模式运行时,默认会把 pid 写入 /var/run/redis.pid 文件,也可以通过 pidfile 自定义指定路径 |
| 3 |
|
用于指定 Redis 的监听端口,默认端口是 6379。作者曾在一篇博文中解释过为什么选择 6379 作为默认端口:因为 6379 在手机按键上对应 MERZ,而 MERZ 来自意大利歌女 Alessia Merz 的名字 |
| 4 |
|
用于绑定 Redis 服务监听的主机地址 |
| 5 | |
用于设置客户端空闲多少秒后自动关闭连接,如果设置为 0,则表示禁用该功能 |
| 6 | |
指定 Redis 日志记录级别。Redis 共支持四个级别:debug、verbose、notice、warning,默认值为 notice |
| 7 | |
用于指定日志记录方式,默认输出到标准输出。如果 Redis 以守护进程方式运行,而这里仍配置为标准输出,则日志会被发送到 /dev/null |
| 8 | |
设置 Redis 数据库数量,默认使用数据库 0,可以通过SELECT |
| 9 |
Redis 默认配置文件中提供了三个条件: sa ve 900 1 sa ve 300 10 sa ve 60 10000 它们分别表示三种阈值设置:900 秒(即 15 分钟)内发生 1 次修改、300 秒(5 分钟)内发生 10 次修改,以及 60 秒内发生 10000 次修改。 |
指定在多长时间内发生多少次更新操作后,将数据同步到数据文件中,这些条件可以同时配合使用 |
| 10 | |
指定将数据存储到本地数据库时是否启用压缩,默认值为 yes。Redis 使用 LZF 压缩算法,如果为了节省 CPU 时间也可以关闭该选项,但数据库文件体积会明显增大 |
| 11 | |
指定本地数据库文件名称,默认值是 dump.rdb |
| 12 | |
指定本地数据库文件的存放目录 |
| 13 | |
当当前实例作为 sla ve 服务时,用于设置 master 服务的 IP 地址和端口。Redis 启动后会自动从 master 节点同步数据 |
| 14 | |
当 master 服务启用了密码保护时,sla ve 服务连接 master 时需要提供对应密码 |
| 15 | |
设置 Redis 的连接密码。如果启用了该配置,客户端连接 Redis 后需要通过 AUTH |
| 16 | |
设置同一时间允许的最大客户端连接数,默认不限制。Redis 可同时打开的客户端连接数受 Redis 进程可打开的最大文件描述符数量影响。如果设置 maxclients 0,表示不作限制。当客户端连接数达到上限时,Redis 会拒绝新的连接,并返回 max number of clients reached 错误信息 |
| 17 | |
指定 Redis 的最大内存限制。Redis 启动时会先将数据加载到内存中,当达到最大内存后,会优先尝试清除已过期或即将过期的 Key。如果处理后仍达到最大内存限制,将不能继续执行写入操作,但仍然可以读取数据。Redis 新的 vm 机制中,Key 会存放在内存里,Value 会存放到 swap 区 |
| 18 | |
指定是否在每次更新操作后记录日志。Redis 默认采用异步方式将数据写入磁盘,如果不开启该选项,在断电等异常情况下可能会丢失一段时间的数据。因为 redis 本身同步数据文件是按照上面 sa ve 条件执行的,所以部分数据会在一段时间内只存在于内存中。默认值为 no |
| 19 | |
指定追加更新日志的文件名,默认值为 appendonly.aof |
| 20 | |
指定更新日志的同步条件,共有 3 个可选值:
|
| 21 | |
指定是否启用虚拟内存机制,默认值为 no。简单来说,VM 机制会将数据分页存储,由 Redis 把访问量较少的页面,也就是冷数据,swap 到磁盘,而访问频繁的页面则由磁盘自动换入到内存中(后续文章中会进一步分析 Redis 的 VM 机制) |
| 22 | |
指定虚拟内存文件路径,默认值为 /tmp/redis.swap,多个 Redis 实例之间不能共享同一个文件 |
| 23 | |
将所有大于 vm-max-memory 的数据写入虚拟内存。无论 vm-max-memory 设置得多小,所有索引数据都会保存在内存中(Redis 的索引数据就是 keys)。也就是说,当 vm-max-memory 设置为 0 时,实际上所有 value 都会存放到磁盘中。默认值为 0 |
| 24 | |
Redis 的 swap 文件被划分为多个 page,一个对象可以保存在多个 page 中,但同一个 page 不能被多个对象共享。vm-page-size 需要根据存储的数据大小来设置,作者建议:如果存储大量小对象,page 大小最好设置为 32 或 64bytes;如果存储的是大对象,则可以使用更大的 page;如果不确定,直接使用默认值即可 |
| 25 | |
设置 swap 文件中的 page 数量。由于页表(一种表示页面空闲或使用状态的 bitmap)保存在内存中,因此磁盘上每 8 个 pages 会消耗 1byte 的内存。 |
| 26 |
|
设置访问 swap 文件的线程数量,通常不要超过机器 CPU 的核心数。如果设置为 0,那么所有对 swap 文件的操作都会串行执行,可能造成较长时间的延迟。默认值为 4 |
| 27 |
|
设置在向客户端返回应答时,是否将较小的数据包合并后再发送,默认是开启状态 |
| 28 |
|
指定当元素数量超过一定范围,或者单个元素大小超过某个临界值时,采用一种特殊的哈希算法 |
| 29 |
|
指定是否启用激活重置哈希功能,默认开启(后面在介绍 Redis 哈希算法时会进一步说明) |
| 30 |
|
指定引入其它配置文件,可以让同一台主机上的多个 Redis 实例共用同一份基础配置文件,同时保留各自独立的特定配置 |
