IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 黑马-Redis -> 正文阅读

[大数据]黑马-Redis

1、Redis基础

2、Redis高级

1.1持久化

1、RDB(关注点:数据)

概述

当前数据进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据

开启方式一

命令:

127.0.0.1:6379>save

作用:手动执行一次保存操作,默会在Redis的安装路径的data目录下生成一个dump.rdb二进制文件

save指令相关配置

  • dbfilename dump.rdb
    • 说明:设置温蒂数据库文件名,默认值为dump.rdb
    • 经验:通常设置为dump-端口号.rdb
  • dir
    • 说明:设置存储.rdb文件的路径
    • 经验:通常设置成存储空间较大的目录中,目录名称data
  • rdbcompression yes
    • 说明:设置存储至本地数据库时是否压缩数据就,默认为yes,采用LZF压缩
    • 经验:通常默认为开启状态,如果设置为no,可以节省CPU运行时间,但会使存储文件变得巨大
  • rdbchecksum yes
    • 说明:设置是否进行rdb文件格式校验,该校验过程在写文件和读文件过程均进行
    • 经验:通常为开启状态,如果设置为no,可以解决读写过程约10%时间消耗,但是存在一定的数据损坏的风险

数据恢复过程

在Redis服务启动的时候,就会自动加载rdb文件,将数据恢复

save指令工作原理

在这里插入图片描述
当有四个客户端依次执行以上命令时,由于Redis单线程的特点,四条指令会被塞进队列中依次执行,但是save指令的执行会阻塞当前Redis服务器,直到当前rdb过程完成为止,因此有可能会造成长时间阻塞,线上环境不建议使用

开启方式二

命令

127.0.0.1:6379>bgsave
Background saving started

工作原理:

作用:手动启动后台保存操作(会调用glibc的函数fork产生一个子进程,快照持久化完全交给子进程来处理,父进程继续处理客户端请求,子进程刚刚产生时,他和父进程共享内存里面的代码段和数据段),但不是立即执行

开启方式三

命令:
在配置文件中添加如下配置:

save second changes

作用:满足限定时间范围内(second)key的变化数量达到指定数量(changes)即进行持久化
范例:在10秒内300个key发生变化就会进行持久化

save 10 300

三种开启方式的对比

在这里插入图片描述

2、AOF(关注点:数据的操作过程)

概述

将数据的操作过程进行保存,日志形式,存储的是操作过程,存储格式复杂,关注点在数据的操作过程

AOF写数据过程

在这里插入图片描述
当Redis服务端接收到set指令时,并不会直接写.aof文件,而是先存储在缓存区,等达到一定条件之后再写.aof文件

AOF从缓存往.aof文件写数据的三种策略(appendfsync)

  • always(每次):每次写入操作均同步到AOF文件中,数据零误差,性能较低,不建议使用
  • everysec(每秒):每秒将缓冲区中的指令同步到AOF文件中,数据准确性较高,性能较高,建议使用,也是默认配置,但是在系统突然宕机的情况下会丢失1秒内的数据
  • no(系统控制):由操作系统控制每次同步到AOF文件的周期,整体过程不可控

开启方式

配置:
在配置文件中添加如下配置:

appendonly yes|no

作用:
是否开启AOF持久化功能,默认为不开启状态

配置:
在配置文件中添加如下配置:

appendfsync always|everysec|no

作用:
AOF写数据策略

其他配置:

appendfilename filename

修改AOF持久化文件名,建议配置为APPendonly-端口号.aof

dir

AOF持久化文件保存路径,与RDB持久化文件保持一致即可

AOF重写

随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。AOF文件重写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。简单说就是对同一个数据的弱干条命令执行结果转化为最终结果数据对应的指令进行记录。

如下图中左边的指令,重写后会生成左边两条指令,但最终结果都是一样的
在这里插入图片描述

AOF重写规则

  • 进程内已超时的数据不再写入文件
  • 忽略无效指令,重写时使用进程内数据直接生成,这样新的AOF文件只保留最终数据的写入命令
  • 对同一条数据的多条写命令合并为一条命令
    如:lpush a、lpush b、lpush c 可转化为:lpush a b c,为防止数据量过大造成客户端缓冲区溢出,对list、hash、set、zset等类型,每条指令最多写入64个元素

AOF重写方式

手动重写:

127.0.0.1:6379>bgrewriteaof
Background append only file rewriting started

自动重写:
在配置文件中添加如下配置:

auto-aof-rewrite-min-size(自动重写最小尺寸) size
auto-aof-rewrite-percentage(自动重写百分比) percentage

AOF重写原理

点击查看

3、RDB和AOF的区别

在这里插入图片描述

4、如何选择持久化方式

  • 对数据非常敏感,建议使用默认的AOF持久化方案
  • 数据呈现阶段有效性,建议使用RDB持久化方案
  • 综合对比
    • 如果不能承受数分钟以内的数据丢失,对业务数据非常敏感,选用AOF
    • 如果能承受数分钟以内的数据丢失,且追求大数据集的恢复速度,选用RDB
    • 灾难恢复选用RDB
    • 双保险策略,同时开启RDB和AOF,重启后,Redis优先选用AOF来恢复数据,降低丢失数据的量

5、持久化的应用场景

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-11 15:47:32  更:2021-12-11 15:49:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:06:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码