今天继续给大家介绍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. Kotlin学习-基础知识点
  2. 【Flask】url_for函数
  3. 获取用户精准地理位置信息(百度地图)
  4. MySQL5.6忘记root用户名和密码
  5. 判断 list 集合是否含有重复对象
  6. 目标检测——各个框架下Tensor和矩阵的维度次序
  7. 技术点:注意Java的java.util.List.subList的坑
  8. 2012年3月份工作总结 ~ 之 ~ PDF 作业对应 (虽然这个作业没有什么意思,但是非常值得总结)
  9. kylin基础概念和基础性能优化
  10. mysqldump+系统计划任务定时备份MySql数据
  11. POI中设置Excel单元格格式样式(居中,字体,边框等)
  12. 对比iOS网络组件:AFNetworking VS ASIHTTPRequest
  13. 西门子滚筒洗衣机教程_西门子洗衣机优缺点
  14. Mybatis-Plus入门案例、以及为什么不建议使用MP?
  15. 深度沉浸能力的锻炼方法
  16. 使用python制作爬虫_使用Python的urllib和urllib2模块制作爬虫的实例教程
  17. 计算机风景画作品,电脑风景画图片
  18. 1,2,3,5,8,13用C语言输出前20项,c语言,编程实现,求斐波那契数列,1,1,2,3,5,8,......的前20项及前20项和...
  19. kettle优化之提高MySQL读写速度
  20. Aspose.Words在word文档合并时如何控制列表编号

热门文章

  1. Leetcode—5.n sum 问题python解答
  2. 基于DEAP库的python进化算法-5.遗传算法求解TSP问题的改进
  3. mysql基础1-数据库安装配置及语句规范
  4. Bert模型冻结指定参数
  5. 博文视点程序员读书节,大咖带你共读十日精彩
  6. 网站运营之比较和差异化
  7. 19【推荐系统8】PNN模型——加强特征交叉能力
  8. 文件——rstrip() 、lstrip()和 strip()、zip() 函数
  9. oracle函数应用,oracle函数应用
  10. mysql 序列 语句_MySQL 序列使用