redis持久化方式有两种:RDB方式和AOF方式

  1、RDB方式:内存快照,在指定的时间间隔对数据进行快照存储,支持在客户端直接BGSAVE或者SAVE命令来创建一个内存快照,BGSAVE会fork一个子进程将快照写入磁盘,父进程仍可处理其它命令,SAVE则执行过程中不处理其它命令;在redis.conf可以调整save配置选项来设置持久化的触发策略,当在规定时间内Redis发生了写操作的个数满足设定的条件触发持久化。

  2、AOF方式:记录每次对服务器的写操作,当服务器重启时会重新执行这些命令来恢复数据,通过在redis.conf中配置appendonly yes开启AOF方式 ,通过调整appendsync参数来设置同步的策略

  RDB方式优点:对性能影响小、恢复数据快,缺点:会丢失数据、fork子进程会影响提供服务的能力。

  AOF方式优点:安全、可容灾、可读 缺点:文件体积大、性能损耗、数据恢复慢

  redis内存管理

  在redis.conf中通过maxmemory 来配置最大内存,通过maxmemory-policy来配置到达阈值的策略,可选策略如下

  其中LRU (最近最少使用) 根据数据的历史访问记录来淘汰数据,LFU(历史访问次数),历史访问频率来淘汰数据,具体可参考redis官网。

  reids还可以配置内存压缩 ,通过配置各个数据结构的最大值来对数据进行压缩,节省空间。

  redis数据过期策略

  1、主动处理,每秒执行10次,从设置有过期时间的key中随机找20个,删除已经过期的,如果有超过25%的过期,则重新再执行一次。

  2、被动处理 每次访问时检查是否过期,过期则删除,在数据恢复时候。

  数据恢复时过去数据的处理

  1、RDB 方式 过期的key不会持久化,载入期间,过期的key会通过主动或者被动被删除掉

  2、AOF方式每次遇到过期的key时会追加一条del命令,恢复时顺序执行命令时就会删除过期的key

  

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

  1. Redis的持久化机制与内存管理机制

    1.概述 Redis的持久化机制有两种:RDB 和 AOF ,这两种机制有什么区别?正式环境应该采用哪种机制? 我们的服务器内存资源是有限的,如果内存被Redis的缓存占满了怎么办?这就要看Redis ...

  2. 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 ...

  3. 浅谈:Redis持久化机制(一)RDB篇

    浅谈:Redis持久化机制(一)RDB篇 ​ 众所周知,redis是一款性能极高,基于内存的键值对NoSql数据库,官方显示,它的读效率可达到11万次每秒,写效率能达到8万次每秒,因为它基于内存以及存 ...

  4. 北京大公司二面:了解Redis持久化机制吗?

    今日总结 Redis持久化机制:RDB和AOF RDB持久化:定时任务,BGSAVE命令 fork一个子进程生成RDB文件(二进制) AOF持久化:根据配置将写命令存储至日志文件中,顺序写&& ...

  5. ARC机制集合内存管理

    // //  main.m //  13-ARC机制集合内存管理 // //  Created by apple on 14-3-21. //  Copyright (c) 2014年 apple. ...

  6. 消息中间件-RabbitMQ持久化机制、内存磁盘控制

    RabbitMQ持久化机制 RabbitMQ内存控制 RabbitMQ磁盘控制 RabbitMQ持久化机制 重启之后没有持久化的消息会丢失 package com.study.rabbitmq.a13 ...

  7. 浅谈:Redis持久化机制(二)AOF篇

    浅谈:Redis持久化机制(二)AOF篇 ​ 上一篇我们提及到了redis的默认持久化方式RDB,是一种通过存储快照数据方式持久化的机制,它在宕机后会丢失掉最后一次更新RDB文件后的数据,这也是由于它 ...

  8. redis持久化机制

    redis持久化 redis的数据存在内存中,所以存取性能好.但是存在内存中的数据存在一个问题,一旦机器重启,内存数据消失.为了解决这个问题,redis支持持久化.持久化就是为了解决内存数据丢失时恢复 ...

  9. redis 源代码分析(一) 内存管理

    一,redis内存管理介绍 redis是一个基于内存的key-value的数据库,其内存管理是很重要的,为了屏蔽不同平台之间的差异,以及统计内存占用量等,redis对内存分配函数进行了一层封装,程序中 ...

随机推荐

  1. Java获取两个指定日期之间的所有月份

    String y1 = "2016-02";// 开始时间 String y2 = "2019-12";// 结束时间 try { Date startDate ...

  2. 坑爹微信之读取PKCS12流时出现的java.io.IOException: DerInputStream.getLength

    背景 微信退款接口需要使用到证书,我参考微信的官方Demo进行,部分代码如下: char[] password = config.getMchID().toCharArray(); InputStre ...

  3. 刷题记录:Shrine

    目录 刷题记录:Shrine 刷题记录:Shrine 题目复现链接:https://buuoj.cn/challenges 参考链接:Shrine 解此题总结一下flask的SSTI:CTF SSTI ...

  4. POP IM 产品分析报告

    一.   体验环境 产品名称:POP IM 软件版本:v2.4.0 手机系统:一加5T Android 9 体验时间:2019.10.22-2019.10.31 二.   产品简介 1.   产品定位 ...

  5. C# 最简单的使程序单进程运行的方法

    1.代码1 static void Main() { Process current = Process.GetCurrentProcess(); Process[] processes = Proc ...

  6. 014 ThreadLocal详解

    一:ThreadLocal的原理 1.说明 ThreadLocal从字面意思来理解,是一个线程本地变量,也可以叫线程本地变量存储.有时候一个对象的变量会被多个线程所访问,这个时候就会有线程安全问题,当 ...

  7. 005 vue路由

    一:元素的获取 1.ref元素获取 可以通过ref获取DOm,也可以获取组件的引用 <!DOCTYPE html> <html lang="en"> < ...

  8. Freemarke

    本文介绍了freemarker的集成.FTL指令.内建函数.运算符等常用操作. 1.为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类 ...

  9. 【前端】input输入框只能输入大于等于0的正数

    大于等于0的正数,允许小数 <input type="number" step="1" min="0" onkeyup="t ...

  10. Appium脚本(2):元素检测

    场景: 有的按钮在第一次打开时显示,之后就不显示了,如更新提示.特性介绍等,面对这样的场景写了如下脚本,增加脚本的复用性. no_element_exception_2.py from appium ...