redis持久化机制和内存管理
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持久化机制和内存管理的更多相关文章
- Redis的持久化机制与内存管理机制
1.概述 Redis的持久化机制有两种:RDB 和 AOF ,这两种机制有什么区别?正式环境应该采用哪种机制? 我们的服务器内存资源是有限的,如果内存被Redis的缓存占满了怎么办?这就要看Redis ...
- 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 ...
- 浅谈:Redis持久化机制(一)RDB篇
浅谈:Redis持久化机制(一)RDB篇 众所周知,redis是一款性能极高,基于内存的键值对NoSql数据库,官方显示,它的读效率可达到11万次每秒,写效率能达到8万次每秒,因为它基于内存以及存 ...
- 北京大公司二面:了解Redis持久化机制吗?
今日总结 Redis持久化机制:RDB和AOF RDB持久化:定时任务,BGSAVE命令 fork一个子进程生成RDB文件(二进制) AOF持久化:根据配置将写命令存储至日志文件中,顺序写&& ...
- ARC机制集合内存管理
// // main.m // 13-ARC机制集合内存管理 // // Created by apple on 14-3-21. // Copyright (c) 2014年 apple. ...
- 消息中间件-RabbitMQ持久化机制、内存磁盘控制
RabbitMQ持久化机制 RabbitMQ内存控制 RabbitMQ磁盘控制 RabbitMQ持久化机制 重启之后没有持久化的消息会丢失 package com.study.rabbitmq.a13 ...
- 浅谈:Redis持久化机制(二)AOF篇
浅谈:Redis持久化机制(二)AOF篇 上一篇我们提及到了redis的默认持久化方式RDB,是一种通过存储快照数据方式持久化的机制,它在宕机后会丢失掉最后一次更新RDB文件后的数据,这也是由于它 ...
- redis持久化机制
redis持久化 redis的数据存在内存中,所以存取性能好.但是存在内存中的数据存在一个问题,一旦机器重启,内存数据消失.为了解决这个问题,redis支持持久化.持久化就是为了解决内存数据丢失时恢复 ...
- redis 源代码分析(一) 内存管理
一,redis内存管理介绍 redis是一个基于内存的key-value的数据库,其内存管理是很重要的,为了屏蔽不同平台之间的差异,以及统计内存占用量等,redis对内存分配函数进行了一层封装,程序中 ...
随机推荐
- shell脚本编程基础之while、for、until循环
while及until循环结构 while CONDITION:do statement done 进入循环:条件满足 退出循环:条件不满足 当需要命令的执行状态返回值时,可以直接把整个命令当做循环的 ...
- 你对SQA的职责和工作活动(如软件度量)的理解?
SQA就是独立于软件开发的项目组,通过对软件开发过程的监控,来保证软件的开发流程按照指定的CMM规程(如果有相应的CMM规程),对于不符合项及时提出建议和改进方案,必要时可以向高层经理汇报以求问题的解 ...
- 【python】学习笔记之遇到的坑print输出报错
在Python3.x中,使用print时出错(SyntaxError: Missing parentheses in call to 'print')解决办法 Python2到Python3,很多基本 ...
- Fluent也弹窗
具体步骤见<fluent加载第三方(C++,Fortran等)动态链接库> 我们对导入的动态链接库进行改动 打开VS2013 源代码: #include #ifdef __cplusplu ...
- 微信小程序之数据缓存
关于缓存,举个示例,假定我不是通过微信授权登录的方式,小程序又是如何识别我登录后的身份呢???效果图: 这个功能我是通过缓存实现的. 关键核心代码如下: wx.setStorage({ key: 'u ...
- Redis配置讲解及实战
前言 Redis是一个开源的内存k-v数据库,同时也可用作缓存,消息队列.支持多种数据类型,如字符串,列表,字典,集合,有序集合. 演示环境 $ uname -a Darwin Darwin Kern ...
- 【IoT】物联网NB-IoT之电信物联网开放平台对接流程浅析
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/liwei16611/article/de ...
- centos 安装 libiconv
安装方法如下: cd /usr/local/src wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz tar -zxvf li ...
- python路径相关技巧
在文件C:\work\python\rqalpha\rqalpha\utils\config.py 找文件:C:\work\python\rqalpha\rqalpha\config.yml 则通过下 ...
- springboot2 配置 https
package cn.xiaojf.aibus.configure; import org.apache.catalina.Context; import org.apache.catalina.co ...