1、概述

Redis的持久化机制有两种:RDB 和 AOF ,这两种机制有什么区别?正式环境应该采用哪种机制?

我们的服务器内存资源是有限的,如果内存被Redis的缓存占满了怎么办?这就要看Redis的内存管理策略是怎么配置的了。

今天我们就来聊一下上面提出的这两个问题。

2、Redis的持久化机制

2.1 RDB

1、什么是RDB?

RDB 全称 Redis DataBase,是 Redis 默认的持久化机制。

RDB机制的原理是:每隔一段时间把Redis在内存中的数据写到磁盘,手动停止Redis服务时,也会往磁盘上写,当Redis再次启动时,会从磁盘上读取到数据,恢复到内存中。

2、RDB的好处

  • 会定时对数据进行全量备份
  • 恢复数据简单,支持远程传输
  • 可以保证备份数据的完整性
  • 恢复数据速度块

3、RDB的坏处

  • 由于是有时间间隔的备份,因此当服务异常时数据可能会丢失一部分
  • 备份时对CPU的负担较大

4、RDB在配置文件中的相关配置

1)文件名及文件保存路径的配置

2)设置同步硬盘的时间

save ""  代表不同步到磁盘,数据只在内存存储

save 300 100  代表有100个键发生变更,每300秒同步磁盘

3)其他配置

stop-writes-on-bgsave-error yes   // 设置为yes,则在写入磁盘的的过程中出错,会停止写操作

rdbcompression yes    //  设置为yes,则rdb文件在写的过程中会进行压缩,对CPU有一定损耗

rdbchecksum yes   // 设置为yes,会对rdb进行校验,对性能有一定损耗

2.2 AOF

1、什么是AOF

AOF 全称 Append Only File,默认是关闭的。

AOF是以日志的形式记录Redis的写操作,读操作不会记录。以追加的方式存储文件,恢复时会将日志文件中的写操作重新执行一遍。

2、AOF的好处

  • 以秒级进行备份,更能保证数据的完整性
  • 如果磁盘满了,可以执行redis-check-aof工具解决
  • 当日志文件太大,会自动进行优化压缩
  • 日志中的写操作,可以手动修改,恢复起来更灵活

3、AOF的坏处

  • 日志文件比RDB文件大
  • 每秒都会与磁盘有IO操作,影响性能

4、AOF在配置文件中的相关配置

1)开启AOF,设置文件名

2)设置同步策略

# appendfsync always    // 有一条写操作就同步一次(性能差)
appendfsync everysec   // 每秒同步一次(推荐)
# appendfsync no          // 不同步

3)重写策略

auto-aof-rewrite-percentage 100    // AOF文件是上次大小的100%(建议调小)
auto-aof-rewrite-min-size 64mb      // AOF文件大小达到64MB(建议调大)

以上两个配置建议修改,根据实际情况调整。

2.3 RDB 、AOF 如何选择

如果只是把Redis当缓存来用,不介意数据的丢失,建议使用RDB方式,如果对数据的完整性比较在意,建议使用AOF方式。

3、Redis的内存管理机制

我们的服务器内存资源是有限的,如果内存被Redis的缓存占满了,我们应该如何处理呢?

通过调整配置文件中的 maxmemory 和 maxmemory-policy

maxmemory 是指定内存达到多大时,执行内存优化,默认单位是byte

maxmemory-policy 是执行的优化策略:

  • noeviction  Redis的默认配置,不清理过期的缓存,没有内存则返回错误
  • allkeys-lru  推荐配置,清除最少用的旧缓存

4、综述

今天聊了一下Redis的持久化机制和内存管理机制,希望能对大家有所帮助。

希望大家多多评论交流,共同成长。

关注追风人聊Java,每天更新Java干货。

Redis的持久化机制与内存管理机制的更多相关文章

  1. Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches Slab内存管理机制 SLUB内存管理机制

    Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches   Slab内存管理机制 SLUB内存管理机制 http://w ...

  2. Spark内存管理机制

    Spark内存管理机制 Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行 ...

  3. 浅谈Linux内存管理机制

    经常遇到一些刚接触Linux的新手会问内存占用怎么那么多?在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的一个优秀特性,在这 ...

  4. ARC内存管理机制详解

    ARC在OC里面个人感觉又是一个高大上的牛词,在前面Objective-C中的内存管理部分提到了ARC内存管理机制,ARC是Automatic Reference Counting---自动引用计数. ...

  5. 深入了解C#系列:谈谈C#中垃圾回收与内存管理机制

    今天抽空来讨论一下.Net的垃圾回收与内存管理机制,也算是完成上个<WCF分布式开发必备知识>系列后的一次休息吧.以前被别人面试的时候问过我GC工作原理的问题,我现在面试新人的时候偶尔也会 ...

  6. 【Cocos2d-x 3.x】内存管理机制与源码分析

    侯捷先生说过这么一句话 :  源码之前,了无秘密. 要了解Cocos2d-x的内存管理机制,就得阅读源码. 接触Cocos2d-x时, Cocos2d-x的最新版本已经到了3.2的时代,在学习Coco ...

  7. Spark 1.6以后的内存管理机制

     Spark 内部管理机制 Spark的内存管理自从1.6开始改变.老的内存管理实现自自staticMemoryManager类,然而现在它被称之为"legacy". " ...

  8. python的内存管理机制

    先从较浅的层面来说,Python的内存管理机制可以从三个方面来讲 (1)垃圾回收 (2)引用计数 (3)内存池机制 一.垃圾回收: python不像C++,Java等语言一样,他们可以不用事先声明变量 ...

  9. Java虚拟机内存管理机制

    自动内存管理机制 Java虚拟机(JVM)在执行Java程序过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区 ...

随机推荐

  1. Find-set-root-ignore-floppies-ignore-cd /bootmgr 解决办法(用win 7安装盘)

    出现标题此种现象,一般是mgr引导程序丢失有关,现在排除bootloader 选择是硬盘引导, 然后修改为cd盘引导,并重启,在win7安装程序启动后,选择修复系统. 打开相应的commnd,并执行如 ...

  2. Mysql读写锁保姆级图文教程

    摘要:读锁会阻塞写,但是不会阻塞读,而写锁会把杜希俄都阻塞. 本文分享自华为云社区<Mysql保姆级读写锁图文教程丨[绽放吧!数据库]>,作者:Code皮皮虾 . 准备 创建mylock表 ...

  3. JIT in MegEngine

    作者:王彪 | 旷视框架部异构计算组工程师 一.背景 什么是天元 旷视天元(MegEngine)是一个深度学习框架,它主要包含训练和推理两方面内容.训练侧一般使用 Python 搭建网络:而推理侧考虑 ...

  4. 基于Unity的A星寻路算法(绝对简单完整版本)

    前言 在上一篇文章,介绍了网格地图的实现方式,基于该文章,我们来实现一个A星寻路的算法,最终实现的效果为: 项目源码已上传Github:AStarNavigate 在阅读本篇文章,如果你对于里面提到的 ...

  5. python语法入门

    程序=数据+功能        我们学习编程语言的目的是为了控制计算机能够像人一样去做事        所以说,编程语言中出现的所有的语法都是为了控制计算机能够像人一样去做xxx事  一.注释:  1 ...

  6. 2021大厂Android面试高频100题最新汇总(附答案详解)

    前言 现在越来越多的人应聘工作时都得先刷个几十百来道题,不刷题感觉都过不了面试. 无论是前后端.移动开发,好像都得刷题,这么多人通过刷题过了面试,说明刷题对于找工作还是有帮助的. 不过这其中有一个问题 ...

  7. 通信协议,TCP/UDP对比:

    通信协议 协议:约定,比如在中国约定说普通话 网络通信协议:速率,传输码率,代码结构,传输控制... 问题:非常复杂 大事化小:分层 TCP/IP协议簇:实际上是一组协议 重要: TCP:用户传输协议 ...

  8. Linux中的账号权限管理

    一.用户账号和组账号概述 Linux基于用户身份对资源访问进行控制 1.1.用户账号 超级用户:root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有最高的权限.系统中超级用户是唯一 ...

  9. CTF-favorite_number

    想到自己越来越菜就越发兴奋 这是一道CTF,PHP审计的一道: 其实我也知道,兄弟们看见也都头皮有点凉,我就直接看wp了. 也不是没提示,php5.5.9,和全等数组. PHP数组的key溢出问题 其 ...

  10. 单片机学习(八)点阵LED的使用

    目录 一.点阵LED的理论知识 1. 点阵屏的打开方式 2. LED点阵简介 3. 点阵LED的结构和操作方式 4. 74HC595模块 PPT上的简介 串行转并行的工作原理 二.编码实现 1. C5 ...