大家好,我是小林. 虽说 Redis 是内存数据库. 但是它为数据的持久化提供了两个技术,分别是「 AOF 日志和 RDB 快照」. 这两种技术都会用各用一个日志文件来记录信息,但是记录的内容是不同的. AOF 文件的内容是操作命令: RDB 文件的内容是二进制数据. 关于 AOF 持久化的原理我在上一篇已经介绍了,今天主要讲下 RDB 快照. 所谓的快照,就是记录某一个瞬间东西,比如当我们给风景拍照时,那一个瞬间的画面和信息就记录到了一张照片. 所以,RDB 快照就是记录某一个瞬间的内存数据,…
Redis提供的持久化机制 Redis是一种面向"key-value"类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却十分迅速. 近日,Redis的作者在博客中写到,他看到的所有针对Redis的讨论中,对Redis持久化的误解是最大的,于是他写了一篇长文来对Redis的持久化进行了系统性的论述. 文章主要包含三个方面:Redis持久化是如何工作的.这一性能是否可靠以及和其它类型的数据库比较.以下为文章内容: 一.Redis持…
Redis提供的持久化机制    Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却十分迅速. 近日,Redis的作者在博客中写到,他看到的所有针对Redis的讨论中,对Redis持久化的误解是最大的,于是他写了一篇长文来对Redis的持久化进行了系统性的论述. 文章主要包含三个方面:Redis持久化是如何工作的.这一性能是否可靠以及和其它类型的数据库比较.以下为文章内容: 一.redis持久化…
欢迎关注文章这一系列,一起学习 <提升能力,涨薪可待篇> <面试知识,工作可待篇> <实战演练,拒绝996篇> 如果此文对你有帮助.喜欢的话,那就点个赞呗,点个关注呗! 1.持久化 1.1 持久化简介 持久化(Persistence),持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘). 1.2 redis持久化 redis为内存数据库,为了防止服务器宕机以及服务器进程退出后,服务器数据丢失,Redis提…
大家好,我是小林哥,又来图解 Redis 啦. 我在前两篇已经给大家图解了 AOF 和 RDB,这两个持久化技术保证了即使在服务器重启的情况下也不会丢失数据(或少量损失). 不过,由于数据都是存储在一台服务器上,如果出事就完犊子了,比如: 如果服务器发生了宕机,由于数据恢复是需要点时间,那么这个期间是无法服务新的请求的: 如果这台服务器的硬盘出现了故障,可能数据就都丢失了. 要避免这种单点故障,最好的办法是将数据备份到其他服务器上,让这些服务器也可以对外提供服务,这样即使有一台服务器出现了故障,…
前言     Redis链表为双向无环链表!     图解Redis之数据结构篇--简单动态字符串SDS提到Redis使用了简单动态字符串,链表,字典(散列表),跳跃表,整数集合,压缩列表这些数据结构来操作内存,并且简单介绍了Redis简单动态字符串.本篇文章我们继续来分析链表.     链表是一种非常常见的数据结构,在Redis中使用非常广泛,列表对象的底层实现之一就是链表.其它如慢查询,发布订阅,监视器等功能也用到了链表. 系列文章 图解Redis之数据结构篇--简单动态字符串SDS 图解R…
图解Redis之数据结构篇--简单动态字符串SDS 前言     相信用过Redis的人都知道,Redis提供了一个逻辑上的对象系统构建了一个键值对数据库以供客户端用户使用.这个对象系统包括字符串对象,哈希对象,列表对象,集合对象,有序集合对象等.但是Redis面向内存并没有直接使用这些对象.而是使用了简单动态字符串,链表,字典(散列表),跳跃表,整数集合,压缩列表这些数据结构来操作内存. 系列文章 图解Redis之数据结构篇--简单动态字符串SDS 图解Redis之数据结构篇--链表 图解Re…
 前面我们说过,Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储.这几种丰富的数据类型我们花了两篇文章进行了详细的介绍,接下来我们要介绍 Redis 的另外一大优势——持久化. 由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数…
Redis 持久化: 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集. AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾. Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所…
什么是redis Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却十分迅速. redis为何需要持久化 由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据.redis提供两种方式进行持久化:用于crash后,redis的恢复. 一种是RDB持久化(原理是将Rei…
一:Redis持久化配置 Redis的持久化有2种方式[快照,是日志] 二:Rdb快照的配置选项 save 900 1 // 900内,有1条写入,则产生快照 save 300 1000 // 如果300秒内有1000次写入,则产生快照 save 60 10000 // 如果60秒内有10000次写入,则产生快照 (这3个选项都屏蔽,则rdb禁用) 三:redis.conf配置文件中参数的意思 stop-writes-on-bgsave-error yes // 后台备份进程出错时,主进程停不停…
Redis持久化配置 Redis的持久化有2种方式   1快照  2是日志 Rdb快照的配置选项: save 900 1      // 900内,有1条写入,则产生快照 save 300 1000   // 如果300秒内有1000次写入,则产生快照 save 60 10000  // 如果60秒内有10000次写入,则产生快照 (这3个选项都屏蔽,则rdb禁用) stop-writes-on-bgsave-error yes  // 后台备份进程出错时,主进程停不停止写入? rdbcompr…
原文链接:http://www.cnblogs.com/tdws/p/5754706.html Redis的持久化过程中并不需要我们开发人员过多的参与,我们要做的是什么呢?除了深入了解RDB和AOF的作用原理,剩下的就是根据实际情况来制定合适的策略了,再复杂一点,也就是定制一个高可用的,数据安全的策略了. RDB:快照形式,是把内存的当前状态直接保存在RDB中,保存策略是隔一段时间保存一下 AOF:命令行形式,执行一条命令,直接把命令存到一个aof文件中,保存策略是默认一秒钟保存一下命令,对数据…
目录 使用过Redis,那就先说说使用过那些场景吧 Rdb文件是什么,它是干什么的 分析工具 小结 联想 推荐阅读 使用过Redis,那就先说说使用过那些场景吧 字符串缓存 //举例 $redis->set(); $redis->get(); $redis->hset(); $redis->hget(); 队列 //举例 $redis->rpush(); $redis->lpop(); $redis->lrange(); 发布订阅 //举例 $redis->…
Redis的两种持久化机制(RDB和AOF) 什么是持久化    Redis的数据是存储在内存中的,内存中的数据随着服务器的重启或者宕机便会不复存在,在生产环境,服务器宕机更是屡见不鲜,所以,我们希望Redis能够将数据从内存中以某种形式保存到磁盘中,使得重启的时候可以加载磁盘中的文件记录恢复数据,这一过程便是Redis的持久化.    Redis支持两种持久化机制,一种是RDB,另一种是AOF.Redis默认情况下使用RDB方式进行持久化.两种持久化可以单独使用其中的一种,也可以二者结合使用,…
解决---MISCONF Redis被配置为保存RDB快照,但目前无法在磁盘上存留.可能修改数据集的命令被禁用.请检查Redis日志,了解有关错误的详细信息. 出现bug: 在学习celery,将数据保存到redis时出现下面的bug. consumer: Cannot connect to redis://192.168.12.188:6379/3: MISCONF Redis is configured to save RDB snapshots, but is currently not…
Redis详解(一)--RDB 前言 由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库要快的多(内存的读写效率远远大于硬盘的读写效率).但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失. 为了解决这个缺点,Redis提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能.Redis 支持两种形式的…
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File). 在这里假设你已经了解了redis的基础语法,某字母网站都有很好的教程,可以去看.基本使用的文章就不写了,都是一些常用的命令. 下面针对这两种方式来介绍一下.由浅入深. 一.持久化流程 既然redis的数据可以保存在磁盘上,那么这个流程是什么样的呢? 要有下面五个过程…
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File). 在这里假设你已经了解了redis的基础语法,某字母网站都有很好的教程,可以去看.基本使用的文章就不写了,都是一些常用的命令. 下面针对这两种方式来介绍一下.由浅入深. 一.持久化流程 既然redis的数据可以保存在磁盘上,那么这个流程是什么样的呢? 要有下面五个过程…
浅谈:Redis持久化机制(一)RDB篇 ​ 众所周知,redis是一款性能极高,基于内存的键值对NoSql数据库,官方显示,它的读效率可达到11万次每秒,写效率能达到8万次每秒,因为它基于内存以及存读效率高的特性,在市场上的应用中一般都把它作为缓存来使用,同时这也意味着它不能大量的无限制的填充数据,否则容易内存填满,导致redis会向硬盘申请虚拟内存,造成内存和外存的不断I/O,致使效率低下,甚至引起宕机,那么问题来了,既然只是当做缓存而不是为了永久存储数据,redis为什么要做持久化呢?这样…
一.Redis 持久化简介 Redis 的持久化功能是区别于 Memcached 显著特性,数据持久化可以保证系统在发生宕机和重启后数据不会丢失,对于 redis 这种存储在内存中的数据库显得尤为重要. 在 Redis 4.0 以前数据持久化的方式主要有两种 RDB(Redis DataBase)快照方式: 它是将某一时刻的内存数据以二进制的方式写入磁盘,默认保存文件为 dump.rdb AOF(Append Only File)文件追加方式:它是指将所有的操作命令,以文本的形式追加到文件中.默…
RDB 是什么 RDB 文件格式 Header Body DB Selector AUX Fields Key-Value Footer 编码算法说明 Length 编码 String 编码 Score 编码 Value 编码 List Set Sorted Set Hash Zipmap Ziplist Intset Sorted Set in Ziplist Encoding Hashmap in Ziplist Encoding 实际例子 安装.启动 Redis 保存字符串 保存 RDB…
AOF日志与RDB是Reids中两大持久化机制,当服务器或者Reids宕机的时候可以通过这两大机制恢复Redis的数据. 先说说AOF日志吧,在执行一条操作请求时,Redis先将命令在内存中执行,之后再将命令写到AOF日志中,与我们熟悉的MySQL的redo log日志先写日志再执行sql的顺序刚好相反. 这么做的好处主要有两点: 先执行命令再写入AOF日志确保命令不存在语法错误能正常的被执行: 不阻塞主线程: 在Redis中AOF日志有三种写回的策略: Always,同步写回.执行完命令立即写…
一.概念 在指定的时间间隔内将内存中的数据集快照写入磁盘(满足指定时间间隔和操作次数两个条件),也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里 二.配置文件(redis.conf) ################################ SNAPSHOTTING  ################################ 1.自动备份规则(满足这三种条件其中之一则生成rdb文件)  1 2 3 save 900 1              每隔900秒…
上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Redis的初始化脚本文件及启动配置文件,并图解如何以服务的形式来启动.终止Redis服务,可以说我们的Redis本地服务器已基本搭建完成,那可能就有小伙伴要问了,什么叫基本搭建完成,原因是此时的Redis服务虽然已经可以正常启\停,但是客户端还无法远程连接到Redis并执行响应的操作.若要实现远程客户端正常连接,我们仍需要对Redis启动配置文件进行一些设置,这个章节我们重点来讲解下如何对Redis…
前言     字典在Redis中的应用非常广泛,数据库与哈希对象的底层实现就是字典. 系列文章 图解Redis之数据结构篇--简单动态字符串SDS 图解Redis之数据结构篇--链表 图解Redis之数据结构篇--字典 一.复习散列表 1.1 散列表     散列表(哈希表),其思想主要是基于数组支持按照下标随机访问数据时间复杂度为O(1)的特性.可是说是数组的一种扩展.假设,我们为了方便记录某高校数学专业的所有学生的信息.要求可以按照学号(学号格式为:入学时间+年级+专业+专业内自增序号,如2…
一.是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程是不进行任何I/O操作的,这就确保了极高的性能. 如果需要进行大规模数据的恢复且对于数据恢复的完整性不是非常敏感,那RDB要比Redis另一种持久化方式AOF更加高效,RDB的缺点是最后一次持久化…
解释1: 虽然redis是单进程,但是它有一个单独的子进程进行rdb操作,为了保证的数据的一致性,当进行rdb操作失败的时候,主进程就停止写入 所以才有了stop-write-on-bgsave-error 这条命令 如何停止rdb? 答案: 把下面三个参数屏蔽掉就行 开始使用rdb 第一步: 为了方便 修改配置文件 让60秒内写入3000秒就进行快照保存 第二步: 杀掉redis 用最新的配置文件重启redis 第三步: 使用redis自带的测试工具进行3000多条的写入 第四步: 查看执行目…
Redis是内存数据库,它将自己的数据库状态存储在内存里面,所以如果不想办法将存储在内存中的数据库状态保存到磁盘,那么服务器 进程一旦退出,服务器中的数据库状态也会消失不见. 为了解决这个问题,Redis提供了RDB持久化功能,这个功能可以将数据库状态保存到磁盘里面 1.RDB文件的创建与载入 Redis可以使用SAVE或BGSAVE命令创建RDB文件. SAVE命令会阻塞服务器进程,直到RDB文件创建完毕,在服务器阻塞过程中服务器不能处理任何命令,所以此时客户端发送来的命令都会被拒绝. BGS…
不想谈好吉他的撸铁狗,不是好的程序员,欢迎微信关注「SH的全栈笔记」 前言 上文我们聊了基于Sentinel的Redis高可用架构,了解了Redis基于读写分离的主从架构,同时也知道当Redis的master发生故障之后,Sentinel集群是如何执行failover的,以及其执行failover的原理是什么. 这里大概再提一下,Sentinel集群会对Redis的主从架构中的Redis实例进行监控,一旦发现了master节点宕机了,就会选举出一个Sentinel节点来执行故障转移,从原来的sl…