小伙伴们大家好,这次跟大家聊一聊关于redis的配置文件,redis相信大家都知道了,但是redis该怎么配置呢?今天小编就和大家详细说一说关于redis的配置详解。
一、redis基本配置文件
bind 0.0.0.0 监听地址可以用空格隔开后多个监听IP
protected-mode yes #redis3.2之后加入的新特性在没有设置 bind IP和密码的时候只允许访问127.0.0.1 :6379
port 6379 监听端口
tcp-backlog 511 # 三次握手的 时候 server 端收到client ack确认号之后的队列值,默认不需要改。
timeout 0 客户端和Redis服务端的连接超时时间,默认是0,表示永不超时。
tcp-keepalive 300 #tcp会话保持时间
daemonize yes 认情况下redis不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成yes, 当redis作为守护进程运行的时候,它会写一个pid到/var/run/redis.pid文件里面,需要改为yes,进行后端运行。
supervised systemd #和操作系统相关参数可以设置通过upstart和systemd管理Redis守护进程centos7以后都使用systemd
pidfile /var/run/redis_6379.pid #pid文件路径
loglevel notice 日志级别,默认即可
实现配置文件案例演示:
以源码编译安装的配置文件为例:配置文件在/apps/redis/目录下,此时我们要配置其他目录文件: 源码编译的redis服务,需要启动redis服务:redis-server /apps/redis/etc/redis.conf
源码编译步骤详见链接:https://www.cnblogs.com/struggle-1216/p/12116664.html
1、监听本地IP地址和回环网卡IP地址,允许远程访问redis服务
[root@rs1~]#vim /apps/redis/etc/redis.conf
bind 127.0.0.1 192.168.37.17 监听本地IP地址和回环地址
protected-mode yes 有此模式就必须监听本地IP地址,否则无法远程连接

2、 创建数据、日志及pid目录,将不同文件存放在不同的目录下
[root@rs1~]#mkdir /apps/redis/{data,logs,run}
修改redis配置文件,将pid文件指定在新建的目录下,如果想开启多个redis,就新建多个pid的端口,只需要修改端口号即可:
如:pidfile /apps/redis/run/redis_6379.pid ,想再开启一个redis,就将端口号改为一个没人用的端口号:pidfile /apps/redis/run/redis_6378.pid
[root@rs1~]#vim /apps/redis/etc/redis.conf
pidfile /apps/redis/run/redis_6379.pid
logfile "/apps/redis/logs/redis_6379.log"


此时启动redis服务,就会发现生成了log和pid文件,如果重新启动redis,需要将配置文件用kill -9 进程号 命令杀死进程号才行。
[root@rs1redis]#redis-server /apps/redis/etc/redis.conf
[root@rs1redis]#ll /apps/redis/run/redis_6379.pid
-rw-r--r-- 1 root root 5 Dec 29 23:21 /apps/redis/run/redis_6379.pid
[root@rs1redis]#ll /apps/redis/logs/redis_6379.log
-rw-r--r-- 1 root root 1692 Dec 29 23:21 /apps/redis/logs/redis_6379.log
[root@centos17~]#ll /apps/redis/data/dump_6379.rdb
-rw-r--r-- 1 root root 104 Dec 30 09:33 /apps/redis/data/dump_6379.rdb
二、redis快照配置文件
databases 16 设置db库数量,默认16个库
always-show-logo yes # 在启动 redis 时是否 显示 log
save 900 1 # 在900 秒内有一个键内容发生更改触发快照机制
save 300 10 在300 秒内有10个键内容发生更改触发快照机制
save 60 10000
stop-writes-on-bgsave-error no 快照出错时,是否禁止redis写入操作
rdbcompression yes 持久化到 RDB 文件时,是否压缩,"yes" 为压缩,“no” 则反之
rdbchecksum yes 是否开启RC64校验,默认是开启
dbfilename dump.rdb 快照文件名
dir ./ 快照文件保存路径
配置文件演示:
当我们redis快照备份失败时,如果是yes就无法对redis进行写内容,如果改为no就无法写内容,很重要,改为no。
vim /apps/redis/etc/redis.conf

指定快照存放目录及快照名称:

三、redis配置文件详解
1、replica-serve-stale-data yes # 当从库同主库失去连接或者复制正在进行,从机库有两种运行方式:
1) 如果 replica serve stale data 设置为 yes( 默认设置 )),从库会继续响应客户端的 读 请求。
2) 如果 replicaserve stale data 设置为 no ,除 去指定的命令之外的任何请求都会返回一个错误 "SYNC with master in progress" 。
2、replica-read-only yes # 是否设置从库只读
3、repl-diskless-sync no 是否使用 socket 方式复制数据, 目前 redis 复制提供两种方式, disk 和 socket 如果新的 slave 连上来或者重连的 slave 无法部分同步,就会执行全量同步, master 会生成 rdb 文件,有2 种方式:
1)disk 方式是 master 创建一个新的进程把 rdb 文件保存到磁盘,再把磁盘上的 rdb 文件传递给 slave socket 是 master 创建一个新的进程,
直接把 rdb 文件以 socket 的方式发给 slave disk 方式的时候,当一个 rdb 保存的过程中,多个 slave 都能共享这个 rdb 文件。
2)socket 的方式就是 一个个 slave顺序复制, 只有在磁盘速度缓慢但是 网络相对较 快的情况下才使用 socket 方式,否则使用默认的disk方式。
4、repl-diskless-sync-delay 30 #diskless 复制的延迟时间, 设置 0为关闭 一旦复制开始还没有结束之前,master 节点不会再接收新 slave 的复制请求, 直到下一次开始。
5、repl-ping-slave-period 10 #slave 根据 master 指定 的时间进行周期性的 PING 监测
6、repl-timeout 60 复制链接超时时间,需要大于 repl ping slave period 否则会 经常 报超时
7、repl-disable-tcp-nodelay no 在 socket 模式下是否在slave 套接字发送 SYNC之后禁用TCP_NODELAY
如果你选择“yes Redis 将使用更少的 TCP 包和带宽来向 slaves 发送数据。但是这 将使数据传输到 slave上有延迟, Linux 内核的默认配置会达到 40毫秒,
如果你选择了 "no" 数据传输到 salve 的延迟将会减少但要使用更多的带宽。
8、repl-backlog-size 1mb 复制缓冲区大小, 只有在 slave 连接之后 才 分配内存 。
9、repl-backlog-ttl 3600 多次时间 master 没有 slave 连接,就清空 backlog 缓冲区 。
10、replica-priority 100 当 master 不可用,Sentinel 会根据 slave 的优先级选举一个 master 。最低的优先级的 slave ,当选 master 。而配置成 0,永远不会被选举。
11、requirepass foobared 设置 redis 连接密码,配置了redis,必须设置密码,防止被入侵之后被黑客搞破坏。
12、rename-command 重命名 一些高 危命令
13、maxclients 10000 最大连接客户端
14、maxmemory 最大内存 单位为 bytes 字节 8G 内存 的 计算方式 8 G ))*1024 ( MB)*1024 ( KB)*1024 Kbyte,用bc命令可以计算;
需要注意的是 slave 的输出缓冲区是不计算在 maxmemory 内 ,此最大内存应该最大占计算机内存的一半,留一部分内存用来做快照使用。


15、appendonly no #是否开启 AOF 日志 记录 默认 red is 使用的是 rdb 方式持久化,这种方式在许多应用中已经足够用了。但是 redis 如果中途宕机,会导致可能有几分钟的数据丢失,
根据 save 来策略进行持久化,Append Only File 是另一种持久化方式,可以提供更好的持久化特性。 Redis 会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时 Redis 都会先把这个文件的数据读入内存里,先忽略 RDB 文件。
16、appendfilename "appendonly.aof" #AOF文件名
17、appendfsync everysec #aof 持久化策略的配置 no 表示不执行 fsync 由操作系统保证数据同步到磁盘 ,always 表示每次写入都执行 fsync ,以保证数据同步到磁盘 ,everysec 表示每秒执行一次 fsync ,
可能会导致丢失这 1s 数据。
18、no-appendfsync-on-rewrite no(推荐为yes) 在 aof rewrite 期间 是否对 aof 新记录的 append 暂缓使用文件同步策略 主要考虑磁盘 IO 开支和请求阻塞时间。默认为 no, 表示不暂缓新的 aof 记录仍然会被立即同步
Linux 的默认fsync策略是30 秒,如果为 yes 可能丢失 30 秒数据 ,但由于yes性能较好,而且会避免出现阻塞, 因此比较推荐 。
19、auto-aof-rewrite-percentage 100 # 当 Aof log 增长超过指定 百分 比例时,重写 logfile设置为0表示不自动重写 Aof 日志,重写是为了使 aof 体积保持最小,而确保保存最完整的数据。
20、auto-aof-rewrite -min size 64mb # 触发 aof rewrite 的最小文件大小
21、aof-load-truncated yes 是否加载 由于 其他原因 导致 的 末尾 异常 的 AOF文件主进程被 kill/ 断电等
当文件存在问题时,可以针对不同的文件进行修复操作:可以修复aof和rdb后缀的文件。
打开此功能,就会在/apps/redis/data/目录下生成appendonly.aof后缀的文件。


22、aof-use-rdb-preamble yes #r edis4.0 新增 RDB AOF 混合持久化格式,在开启了这个功能之后, AOF 重写产生的文件将同时包含 RDB 格式的内容和 AOF 格式的内容,其中 RDB 格式的内容用于记录已有的数
据,而 AOF 格式的内存则用于记录最近发生了变化的数据,这样 Redis 就可以同时兼有 RDB 持久化和AOF 持久化的优点(既能够快速地生成重写文件,也能够在出现问题时,快速地载入数据)。
23、luatime-limit 5000 #lua 脚本 的 最大 执行时间单位为毫秒
24、cluster-enabled yes 是否开启集群模式,默认是单机模式
25、cluster-config-file-nodes 6379.conf 由 node节点自动生成的集群配置 文件
26、cluster-node-timeout 15000 集群中node节点连接 超时时间
27、cluster-replica-validity-factor 10 在 执行故障转移的时候可能有些节点和 master 断开一段时间数据比较旧 这些 节点就 不适用于选举为 master 超过这个时间的就不会被进行故障转移
28、cluster-migration-barrier 1 一个主节点拥有的至少正常工作的从节点 即如果主节点的 slave 节点故障后, 会 将多余的从节点 分配 到当前主节点 成为 其 新的 从节点。
29、cluster-require-full-coverage no 集群 槽位覆盖 如果 一个 主库宕机 且 没有备库就会出现集群槽位不全 那么 yes 情况下 redis 集群 槽位 验证不全就不再对外提供服务,
而 no 则可以继续使用但是会出现查询数据查不到的情况 (因为有数据丢失) 。
#Slow log 是 Redis 用来记录查询执行时间的日志系统 slow log 保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启slow log而损害 Redis 的速度。
30、slowlog-log-slower than 10000 以微秒 为单位 的 慢日志记录, 为 负数会禁用慢日志,为0会记录 每个命令操作。
31、slowlog-max-len 128 # 记录多少条慢日志 保存在 队列,超出后会删除 最早 的,以此滚动删除
测试效果:
127.0.0.1:6379> slowlog len(integer) 14127.0.0.1:6379> slowlog get1) 1) (integer) 142) (integer) 15446906173) (integer) 44) 1) "slowlog"127.0.0.1:6379> SLOWLOG reset
好了,以上就是关于redis配置文件详解的内容,更多相关内容请持续关注本站。