Redis 的配置
配置文件
Redis 的配置文件位于 Redis 安装目录下的 redis.conf 文件,可以通过修改配置文件来改变 Redis 的默认配置。
配置参数
-
daemonize no
是否以守护进程的方式运行 Redis,默认为 no,改为 yes 则以守护进程的方式运行 Redis。
-
pidfile /var/run/redis.pid
当 Redis 以守护进程方式运行时,Redis 默认会把 pid 写入 /var/run/redis.pid 文件,可以通过 pidfile 指定。
-
port 6379
指定 Redis 监听端口,默认端口为 6379,作者在自己的一篇博文中解释了为什么选用 6379 作为默认端口,因为 6379 在手机按键上 MERZ 对应的号码,而 MERZ 取自意大利歌女 Alessia Merz 的名字。
-
bind
绑定的主机地址。
-
timeout
当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能。
-
loglevel
指定日志记录级别,Redis 总共支持四个级别:debug、verbose、notice、warning,默认为 verbose。
-
logfile
日志记录方式,默认为标准输出,如果配置 Redis 为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给 /dev/null。
-
databases
设置数据库的数量,默认数据库为 0,可以使用 select 命令在连接上指定数据库 id。
-
save
指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合。
save 900 1 save 300 10 save 60 10000上面配置表示 900 秒内有 1 个更改,300 秒内有 10 个更改以及 60 秒内有 10000 个更改。
Redis 的持久化
RDB
RDB 是 Redis 默认的持久化方式,可以将当前内存中的数据保存到磁盘中。
AOF
AOF 持久化方式会将每次对 Redis 的写入操作记录到日志文件中,当 Redis 重启时会重新执行这些命令来恢复原始的数据。
RDB 与 AOF 的区别
- RDB 持久化方式是将当前内存中的数据保存到磁盘中,AOF 持久化方式是将每次对 Redis 的写入操作记录到日志文件中。
- RDB 持久化方式适合大规模的数据恢复,AOF 持久化方式适合小规模的数据恢复。
- RDB 持久化方式在恢复大规模数据时的速度比 AOF 持久化方式要快。
- RDB 持久化方式在 Redis 重启时的恢复速度比 AOF 持久化方式要快。
Redis 的主从复制
主从复制的作用
- 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
- 故障恢复:当主服务器出现问题时,可以由从服务器提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
- 负载均衡:在主从复制的基础上,配合读写分离,可以由主服务器提供写服务,而从服务器提供读服务,分担服务器负载,尤其是在写少读多的场景下,通过多台从服务器支持读操作,可以大大提高服务器的并发量。
- 高可用基石:除了上述作用之外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是 Redis 高可用的基础。
主从复制的原理
- 主从复制的过程中,主服务器会执行 BGSAVE 命令,在后台生成 RDB 文件,同时还会将执行的写命令缓存起来。
- 当 BGSAVE 命令执行完毕后,主服务器会将生成的 RDB 文件发送给从服务器,从服务器接收到 RDB 文件后会丢弃当前的数据,载入收到的 RDB 文件。
- 主服务器会将在执行 BGSAVE 命令期间执行的写命令发送给从服务器,从服务器执行这些写命令,保证主从服务器数据的一致性。
- 从服务器完成对 RDB 文件的载入之后,开始接收主服务器发送的写命令,当主服务器所有的写命令都发送完毕之后,主从复制完成。
主从复制的配置
-
主服务器配置
# 开启主从复制功能 slaveof <masterip> <masterport>
Redis 的哨兵
哨兵的作用
- 监控:哨兵会不断地检查你的主服务器和从服务器是否运作正常。
- 提醒:当被监控的某个 Redis 服务器出现问题时,哨兵可以通过 API 向管理员或者其他应用程序发送通知。
- 自动故障迁移:当一个主服务器不能正常工作时,哨兵可以将一个从服务器升级为新的主服务器,然后由新的主服务器代替已经不能正常工作的主服务器继续处理命令请求。
- 配置中心:如果你的主从服务器配置了不同,那么哨兵可以帮助你实现在这些服务器之间同步配置文件。