今天继续给大家介绍Redis的相关知识,本文主要内容是Redis的原理和配置。

一、Redis持久化原理

Redis在默认情况下,都是把数据存储在内存中的,所有数据的写入、查询等操作都是直接操作内存。将数据存放在内存存在的问题是断电后,数据即丢失。为了解决这一翁题,Redis提供了向磁盘中写入数据的方式,即持久化机制。Redis实现持久化的方式有两种,RDB的方式AOF的方式
RDB方式,是默认启动的数据持久化方式,它将数据存储成二进制文件,根据配置文件指定的策略,定期将数据写入磁盘,或者是人工使用保存命令写入磁盘。可以在Redis登录后,使用save命令或者bgsave命令进行RDB方式的保存,save命令是同步保存,在执行save命令时,redis主线程会执行save保存操作,但是由于Redis主线程要同时处理数据请求工作,因此此时其他客户端的请求会被阻塞。save保存的备份方式是全量备份,即把内存中的所有数据都完整的备份下来,如果内存中的数据量比较大,会引起大量的I/O,导致磁盘性能下降。而BGSAVE命令是异步保存,当执行bgsave操作时,系统会立即返回结果,但是实际上并未保存成功,而是在后台自动进行保存,因此bgsave命令不会阻塞客户端的命令请求。但是,如果是在配置文件中进行的配置,当Redis进行保存时,会开启额外的进程来进行处理,从而不会阻塞Redis的主进程。
AOF的方式类似于MySQl的二进制日志,保存的原理是记录下每一次Redis的写操作,以顺序I/O的方式保存在指定文件的尾部。AOF的实现是采用追加的方式实现的,因此AOF文件会随着时间的增长而文件大小不断扩大,并且可能会造成额外的数据记录。但是Redis还有一个机制,可以自动的扫描AOF文件,并且把冗余的操作进行合并,该机制由bgrewriteof命令实现,该命令在执行后,会将Redis中的数据以命令的方式保存起来,并替换原有的文件。因此,其实bgrewriteof并没有读取旧的AOF文件,而是直接读取的Redis内存中的数据。
需要注意的是,不管是RDB还是AOF的实现方式,Redis的持久化都是只用于备份数据,防止数据丢失用,数据的查询还是直接读取内存中的数据而不是读取磁盘中持久化的数据。
此外,在实际生产环境中,我们通常同时采用上述两种方式,以防止Redis数据丢失。

二、Redis持久化配置

(一)RDB持久化相关配置

RDB持久化在配置文件中的相关配置如下图所示:

RDB持久化主要是通过save参数配置,save后面第一个参数为时间,单位是秒,第二个参数为改动次数。因此,第一行表示在900秒内,改动次数超过1此时,就进行持久化备份,第二行表示在300秒内,改动次数超过10次,就进行持久化备份,第三行表示在60秒内,改动次数超过10000次,就进行持久化备份。通常而言,改动次数越多,所需要时间就会越短。

(二)AOF持久化相关配置

AOF持久化在配置文件中的部分配置如下:

总的来看,AOF持久化是通过以下参数实现的:
1、appendonly
该参数定义了是否开启AOF持久化,如果该参数为NO,则表示不开启AOF持久化,如果该参数为YES,则表示开启AOF持久化,在默认情况下,Redis配置文件中该参数为NO,即表示不开启AOF持久化。
2、appendfilename
该参数定义了AOF持久化的写入文件。
3、appendfsync
该参数表示何时进行持久化,当该参数为always时,每次收到写命令时,立即进行AOF持久化备份,这样做可以最大程度上防止数据丢失,但是会造成性能下降;当该参数为everysec时,表示每秒钟写一次,不管这一秒收到多少个数据写请求;当该参数为NO时,表示由操作系统决定何时进行持久化备份。
6、no-append-fsync-on-write
当该参数为yes时,表示在重写时,对于新的写操作不做同步,而是暂时存放在内存中。
7、auto-aof-rewrite-percentage
该参数表示自动进行AOF持久化的时机,后面跟的是数据的比例,比如当该值为50时,就表示当当前的AOF文件大小是原来的150%时,就会进行一次持久化备份写入。
8、auto-aof-rewrite-min-size
该参数也是定义了AOF持久化的时机,后面跟的是一个大小,比如当该值为32mb时,表示当文件为32mb时会进行持久化操作。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

Redis详解(三)——Redis持久化相关推荐

  1. 33.Redis详解

    一 缓存概念 缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较快的一方起到一个加速访问速度较慢的一方的作用,比如CPU的一级.二级缓存是保存了CPU最近经常访问的数据,内存是保存C ...

  2. Redis详解(1)--原理和机制

    一.性能 1 性能测试 测试环境: RHEL 6.3 / HP Gen8 Server/ 2 * Intel Xeon 2.00GHz(6 core) / 64G DDR3 memory / 300G ...

  3. 数据库应用——Redis详解

                                                                                         Redis详解 一.非关系型数 ...

  4. Redis数据库教程——系统详解学习Redis全过程

    Redis数据库教程--系统详解学习Redis全过程 Redis快速入门:Key-Value存储系统简介 Key-Value存储系统:     Key-Value Store是当下比较流行的话题,尤其 ...

  5. redis 数据类型详解 以及 redis适用场景场合

    redis 数据类型详解 以及 redis适用场景场合 1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访 ...

  6. Redis详解及使用

    Redis详解及使用 前言:对于缓存这个概念大家应该都清除,在项目开发中,为了避免用户频繁请求数据库,比如类似于淘宝这样的大量请求下,导致服务器的数据库访问压力过大导致崩溃,因此我们通过设置缓存来解决 ...

  7. 一文搞定 Spring Data Redis 详解及实战

    转载自  一文搞定 Spring Data Redis 详解及实战 SDR - Spring Data Redis的简称. Spring Data Redis提供了从Spring应用程序轻松配置和访问 ...

  8. 详解从redis,memcached到nginx,网络底层io

    从redis,memcached到nginx,网络底层io的哪些事 1. redis的单线程模型 2. memcached的多线程模型 3. nginx的多进程模型 4. 10种网络模型的应用场景 视 ...

  9. PackageManagerService启动详解(三)之开始初始化阶段流程分析

      PKMS启动详解(三)之BOOT_PROGRESS_PMS_START阶段流程分析 Android PackageManagerService系列博客目录: PKMS启动详解系列博客概要 PKMS ...

  10. Android init.rc文件解析过程详解(三)

    Android init.rc文件解析过程详解(三) 三.相关结构体 1.listnode listnode结构体用于建立双向链表,这种结构广泛用于kernel代码中, android源代码中定义了l ...

最新文章

  1. php 论坛_推荐一个基于话题的高性能轻型开源PHP论坛程序
  2. Vue项目中使用Echarts(一)
  3. 「深入浅出」主流前端框架更新批处理方式
  4. 译:重置/还原Windows IIs设置为默认设置
  5. idea导入servlet包还是显示红色_还是从servlet 开始吧,hello servlet
  6. 使用PowerShell读取文件数据
  7. 基于PyTorch+YOLOv4的口罩佩戴检测,附数据集
  8. AI吻合度100%,某业余6段棋手吊打围甲7段,疑似AI附体-0
  9. 开发一个app,需要申请哪些,费用是多少?
  10. 【转载】数学专业的数学与计算机专业的数学的比较
  11. BEVFormer论文解析
  12. slam第六讲_g2o
  13. 常见面试问题总结目录
  14. Linux下安装CMake的方法
  15. html转docx文档
  16. HNUST 2204 买水果
  17. unity2D横版游戏教程7-敌人AI死亡效果
  18. Go 学习之旅之-- Chanel
  19. 车牌识别——AidLux2023年2月智慧社区AI实战训练营
  20. mysql 除数为0_java中除数为0时出现的异常情况

热门文章

  1. pandas—pd.merge通过键来联接数据集
  2. QCon全球软件开发大会:推动创新,实现技术落地
  3. 一千个哈姆雷特,一千个手游开发者
  4. vSphere及云端计算的完美集成
  5. 《我也能做CTO之程序员职业规划》之二:做CTO的苹果定律
  6. 搜索引擎中影响索引长度的因素
  7. 无所不在的K.I.S.S——《Unix编程艺术》书评
  8. 矩阵线性代数笔记整理汇总,超全面
  9. 海量数据挖掘MMDS week4: 推荐系统之隐语义模型latent semantic analysis
  10. Mapping Text to Knowledge Graph Entities using Multi-Sense LSTMs