当前位置: 首页 > news >正文

redis数据安全(一)数据持久化

 一、Redis数据安全措施:

1、将数据持久化至硬盘

2、将数据复制至其他机器;

复制是在数据持久化的基础上进行的。

二、将数据持久化至硬盘

1、介绍:Redis是一个基于内存的数据库,它的数据是存放在内存中,内存有个问题就是关闭服务或者断电会丢失。Redis的数据也支持写到硬盘中,这个过程就叫做持久化。

持久化的一个重要原因是为了在之后重用数据,或是为了防止系统故障而将数据备份到一个远程位置。

注意:通常 Redis 的主节点是不会进行持久化操作,持久化操作主要在从节点进行。从节点是备份节点,没有来自客户端请求的压力,它的操作系统资源往往比较充沛。

2、Redis持久化选项:Redis提供了2种不同形式的持久化方式

(1)RDB(Redis DataBase) :Redis可以通过快照来获得存储在内存里面的数据在某个时间点上的副本。创建快照后,用户可以对快照进行备份,也可以将快照复制到其他服务器从而创建具有相同数据的服务器副本。简而言之,就是在指定的时间间隔内,定时的将 redis 存储的数据生成Snapshot快照并存储到磁盘等介质上。这是redis备份默认方式;
(2)AOF(Append only File) :只追加文件,将被执行的写命令写到AOF文件的末尾,,在下次 redis 重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。

3、实际使用:

(1)可以单独使用某一种。如果对数据不敏感,可以单独用RDB;但不建议单独使用AOF,因为可能会出现BUG。

(2)也可以同时使用这两种方式,官方推荐2个都启用。

 在这种情况下,当redis重启的时候会优先载入AOF文件来恢复原始的数据,这是因为 AOF 方式的数据恢复完整度更高,且AOF文件保存的数据集要比RDB文件保存的数据集要完整

(3)可以选择关闭持久化: 如果没有数据持久化的需求,也完全可以关闭 RDB 和 AOF 方式,这样的话,redis 将变成一个纯内存数据库,就像 memcache 一样。

官网介绍:

  • Redis 持久化
  • Redis持久化

4、比较:

 5、性能建议:

(1)因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留 save 900 1 这一条

(2)AOF的代价,一是带来持续的IO,二是AOF rewrite的最后将rewrite过程中产生的新数据(aof_rewrite_buf)写到文件造成的阻塞几乎是不可避免的。如果使用AOF,好处是在最恶劣的情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了。

只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基数大小默认值64M(autoaof-rewrite-min-size)太小了,可以设置到5G以上;默认超过原大小100%(auto-aof-rewrite-percentage)大小时重写可以改到适当的数值。

三、Redis 4.0 混合持久化:

1、原理:

重启 Redis 时,我们很少使用 rdb 来恢复内存状态,因为会丢失大量数据。我们通常使用 AOF 日志重放,但是重放 AOF 日志性能相对 rdb 来说要慢很多,这样在 Redis 实例很大的情况下,启动需要花费很长的时间。

Redis 4.0 为了解决这个问题,带来了一个新的持久化选项——混合持久化。将 rdb 文件的内容和增量的 AOF 日志文件存在一起。这里的 AOF 日志不再是全量的日志,而是自持久化开始到持久化结束的这段时间发生的增量 AOF 日志,通常这部分 AOF 日志很小。

在 Redis 重启的时候,可以先加载 rdb 的内容,然后再重放增量 AOF 日志就可以完全替代之前的 AOF 全量文件重放,重启效率因此大幅得到提升。

2、混合持久化配置:

在redis的配置文件当中有一个aof-use-rdb-preamble参数来开启 混合持久化,默认是yes开启的。混合持久化结合了 RDB 和 AOF 的优点,Redis 5.0 默认是开启的。

3、混合持久化优缺点:

(1)优点:混合持久化结合了 RDB 和 AOF 持久化的优点,开头为 RDB 的格式,使得 Redis 可以更快的启动,同时结合 AOF的优点,有减低了大量数据丢失的风险。

(2)缺点:

  • AOF 文件中添加了 RDB 格式的内容,使得 AOF 文件的可读性变得很差;
  • 兼容性差,如果开启混合持久化,那么此混合持久化 AOF 文件,就不能用在 Redis 4.0 之前版本了。

相关文章:

  • Webpack5入门到原理5:处理样式资源
  • Java之CAS
  • 如何训练神经网络❓
  • rk3566-Android11 从驱动到 app 第一章添加驱动程序
  • 64.Spring事件监听的核心机制是什么?
  • Qt简单使用与初识
  • DBA技术栈MongoDB:简介
  • 【STM32】STM32学习笔记-I2C通信外设(34)
  • 近场与远场
  • henauOJ 1113: 计算x的n次方
  • MySQL窗口函数(MySQL Window Functions)
  • 安全运维:cmd命令大全(108个)
  • 【论文阅读】ControlNet、文章作者 github 上的 discussions
  • ChatGPT 如何解决 “Something went wrong. lf this issue persists ….” 错误
  • 驾驭车联网的力量:深入车联网网络架构
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 11111111
  • CentOS6 编译安装 redis-3.2.3
  • httpie使用详解
  • js正则,这点儿就够用了
  • 笨办法学C 练习34:动态数组
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 使用common-codec进行md5加密
  • 移动端唤起键盘时取消position:fixed定位
  • 用Canvas画一棵二叉树
  • Java数据解析之JSON
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 浅谈sql中的in与not in,exists与not exists的区别
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (过滤器)Filter和(监听器)listener
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (五)关系数据库标准语言SQL
  • (一)VirtualBox安装增强功能
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • *2 echo、printf、mkdir命令的应用
  • .axf 转化 .bin文件 的方法
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net 按比例显示图片的缩略图
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 命令行参数包含应用程序路径吗?
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET/C# 使窗口永不获得焦点
  • .NET6实现破解Modbus poll点表配置文件
  • .NET文档生成工具ADB使用图文教程
  • .Net中的集合
  • @RequestMapping-占位符映射