Redis实现持久化和集群的搭建

一、Redis的持久化方案

1)RDB持久化

RDB(Redis Database Backup file),Redsi数据备份文件或Redis数据快照。

把内存中的所有快照文件称为RDB文件,默认是保存在当前运行目录。

RDB持久化在四种情况下会执行:

  • 执行save命令
  • 执行bgsave命令
  • Redis停机时
  • 触发RDB条件时

bgsave的底层工作过程:

fork主进程获得一个子进程,共享内存空间,子进程读取内存数据并写入新的RDB文件,用新的RDB文件替换旧的RDB文件。

RDB的缺点:

  • RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险
  • fork子进程、压缩、写出RDB文件都比较耗时

2)AOF持久化

AOF(全称为Append Only File),AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF。

AOF的记录频率可以通过redis.conf文件来配。

  • appendfsync always

    同步刷盘,每执行一次写命令,立即记录到AOF文件,可靠性高,几乎不丢数据,但是性能不好

  • appendfsync everysec

    写命令执行完先放入AOF缓冲区,然后表示每隔1秒将缓冲区数据写到AOF文件,是默认方案,性能适中

  • appendfsync no

    写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写回磁盘,性能最好,但可靠性差,可能丢失大量数据

Redis持久化的总结

  • AOF:记录每一次执行的命令,文件的体积很大,宕机恢复速度慢,但是数据完整性高,一般使用在对数据安全性要求较高的情况下。
  • RDB:定时对整个内存做快照,文件体积小,会有压缩,数据完整性不如AOF,系统资源的占用高,但是宕机恢复速度快,一般使用在追求更快的启动速度,可以忍受数分钟的数据丢失。

RDB和AOF各有自己的优缺点,如果对数据安全性要求较高,在实际开发中往往会结合两者来使用。

搭建Redis集群

从docker镜像中拉取多个redis后,更改端口信息和ip后,设置主从关系

在一台Redis客户端中输入replicaof <masterip> <masterport>

masterip 是 master 的ip地址,masterport是 master 的端口号,执行此命令的是 replica(salve)从节点
注意 :在5.0以后新增命令replicaof,与salveof效果一致。

只有在 master 主节点上可以执行写操作,其他 slave 从节点只能执行读操作。

相关推荐
2301_813599551 小时前
Go语言怎么做秒杀系统_Go语言秒杀系统实战教程【实用】
jvm·数据库·python
NCIN EXPE6 小时前
redis 使用
数据库·redis·缓存
MongoDB 数据平台6 小时前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
极客on之路6 小时前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家6 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE6 小时前
开启mysql的binlog日志
数据库·mysql
hERS EOUS6 小时前
nginx 代理 redis
运维·redis·nginx
yejqvow126 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
oLLI PILO6 小时前
nacos2.3.0 接入pgsql或其他数据库
数据库
m0_743623926 小时前
HTML怎么创建多语言切换器_HTML语言选择下拉结构【指南】
jvm·数据库·python