数据持久化

Redis持久化

一曲冷凌霜 提交于 2019-11-29 23:21:26
redis 是一个内存数据库,当 redis 服务器重启,获取电脑重启,数据会丢失,我们可以将 redis 内存中的数据 持久化保存到硬盘的文件中。 Redis持久化机制 RDB:默认方式,不需要进行配置,默认就使用这种机制 原理:在一定的间隔时间中,检测key的变化情况,然后持久化数据。 测试: 编辑 redis.windwos.conf 文件: # after 900 sec (15 min) if at least 1 key changed(在15分钟内有一个key改变就进行一次持久化) save 900 1 # after 300 sec (5 min) if at least 10 keys changed save 300 10 # after 60 sec if at least 10000 keys changed save 60 10000 重新启动 redis 服务器,并指定配置文件名称: D:\redis\windows-64\redis-2.8.9>redis-server.exe redis.windows.conf AOF:日志记录的方式,可以记录每一条命令的操作。 原理:可以每一次命令操作后,持久化数据。 测试: 编辑 redis.windwos.conf 文件: appendonly no(关闭aof) --> appendonly yes

MQTT Broker 选型

夙愿已清 提交于 2019-11-29 21:42:55
broker的主要职责是接受发布者发布的所有消息,并将其过滤后分发给不同的消息订阅者。 如今有很多的broker,下面就是一张关于各种broker对比的图片: image 目前我用过的有mosquitto和emqttd(2.0版本后改叫EMQ),因为目前的需求是希望做每秒10万以上的数据接入,所以需要考虑建立集群。但是在使用mosquitto的过程中发现他不支持集群,所以就放弃了,转投emqttd。 在使用mosquitto过程中发现了一些问题: 在使用mosquitto时,如果想使用集群的话,可能会需要进行二次开发。目前只支持桥接。并且他在遍历时的效率非常低,使得他无法支持大量的客户端或者操作过于频繁的操作(比如十万或百万级别的客户端同时发送数据) emqttd有以下优点: 可靠传输。MQTT可以保证消息可靠安全的传输,并可以与企业应用简易集成。 消息推送。支持消息实时通知、丰富的推送内容、灵活的Pub-Sub以及消息存储和过滤。 低带宽、低耗能、低成本。占用移动应用程序带宽小,并且带宽利用率高,耗电量较少。 是中国人写的一个开源的项目,所以使用起来学习成本比较低,容易上手。 EMQ 2.0 (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 语言平台开发,支持大规模连接和分布式集群,发布订阅模式的开源 MQTT

Redis数据备份与恢复

时光毁灭记忆、已成空白 提交于 2019-11-29 20:38:11
Redis所有数据都是保存在内存中,Redis数据备份可以定期的通过异步方式保存到磁盘上,该方式称为半持久化模式,如果每一次数据变化都写入aof文件里面,则称为全持久化模式。同时还可以基于Redis主从复制实现Redis备份与恢复。 1. 半持久化RDB模式 半持久化RDB模式也是Redis备份默认方式,是通过快照(snapshotting)完成的,当符合在Redis.conf配置文件中设置的条件时Redis会自动将内存中的所有数据进行快照并存储在硬盘上,完成数据备份。 Redis进行RDB快照的条件由用户在配置文件中自定义,由两个参数构成:时间和改动的键的个数。当在指定的时间内被更改的键的个数大于指定的数值时就会进行快照。在配置文件中已经预置了3个条件: save 900 1 #900秒内有至少1个键被更改则进行快照; save 300 10 #300秒内有至少10个键被更改则进行快照; save 60 10000 #60秒内有至少10000个键被更改则进行快照。 默认可以存在多个条件,条件之间是“或”的关系,只要满足其中一个条件,就会进行快照。 如果想要禁用自动快照,只需要将所有的save参数删除即可。Redis默认会将快照文件存储在Redis数据目录,默认文件名为:dump.rdb文件,可以通过配置dir和dbfilename两个参数分别指定快照文件的存储路径和文件名

redis-数据持久化

有些话、适合烂在心里 提交于 2019-11-29 19:15:49
目录 数据持久化 RDB 手动触发 save命令 bgsave命令 lastsave命令 自动触发 流程图 RDB文件的处理 保存 更改配置文件 运行期动态修改 压缩 检验 RDB的优缺点 优点 缺点 AOF 使用AOF 文件同步 重写机制 触发方式 手动触发 自动触发 数据持久化 Redis支持 RDB 和 AOF 两种持久化机制,数据持久化能将数据持久化到磁盘,有效避免因进程退出造成的数据丢失问题,再次启动时能根据持久化的文件恢复数据。 RDB RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。 手动触发 save命令 save 阻塞当前Redis服务器,知道RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用。一般使用bgsave命令异步地执行,但是,如果负责保存数据的后台子进程出现问题, save 可以作为保存数据的最后手段来使用。 bgsave命令 bgsave Redis进程执行fork操作创建子进程,Redis进程继续处理客户端请求,fork出来的子进程则负责将数据保存到磁盘,然后退出。阻塞只发生在fork阶段,一般时间很短。 Redis内部所有涉及RDB的操作都采用bgsave的方式,而 save命令 已经废弃。 客户端可以通过 LASTSAVE 命令查看相关信息,判断 BGSAVE

redis高级

你。 提交于 2019-11-29 19:01:59
一.Redis简介 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。 Redis是 NoSQL技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色 二.Redis特性 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。 三.Redis 优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。 丰富的特性 –

两种Redis持久化原理的详解

回眸只為那壹抹淺笑 提交于 2019-11-29 18:46:28
Redis为持久化提供了两种方式: RDB:在指定的时间间隔能对你的数据进行快照存储。 AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。 本文将通过下面内容的介绍,希望能够让大家更全面、清晰的认识这两种持久化方式,同时理解这种保存数据的思路,应用于自己的系统设计中。 持久化的配置 RDB与AOF持久化的工作原理 如何从持久化中恢复数据 关于性能与实践建议 持久化的配置 为了使用持久化的功能,我们需要先知道该如何开启持久化的功能。 RDB的持久化配置 # 时间策略save 900 1save 300 10save 60 10000# 文件名称dbfilename dump.rdb# 文件保存路径dir /home/work/app/redis/data/# 如果持久化出错,主进程是否停止写入stop-writes-on-bgsave-error yes# 是否压缩rdbcompression yes# 导入时是否检查rdbchecksum yes 配置其实非常简单,这里说一下持久化的时间策略具体是什么意思。 save 900 1 表示900s内如果有1条是写入命令,就触发产生一次快照,可以理解为就进行一次备份 save 300 10 表示300s内有10条写入,就产生快照 下面的类似,那么为什么需要配置这么多条规则呢

02.scrapy框架持久化存储

无人久伴 提交于 2019-11-29 17:43:32
1.基于终端指令的持久化存储   保证爬虫文件parse方法中有可迭代对象(通常为列表or字典)的返回,该返回值可以通过终端指令的形式写入指定格式的文件中进行持久化操作 执行输出指定格式进行存储:将爬取到的数据写入不同格式的文件中进行存储   scrapy crawl 爬虫名称 -o xxx.json   scrapy crawl 爬虫名称 -o xxx.xml   scrapy crawl 爬虫名称 -o xxx.csv 2.基于管道的持久化存储   scrapy框架中已经为我们专门集成好了高效,便捷的持久化操作功能,我们直接使用即可.要想使用scrapy的持久化操作功能,我们首先来认识如下两个文件:   items.py : 数据结构模板文件.定义数据属性   pipelines.py:管道文件.接收数据(items),进行持久化操作 持久化流程:   1.爬虫文件爬取到数据后,需要将数据封装到items对象中   2.使用yield关键字将items对象提交给pipelines管道进行持久化操作   3.在管道文件中的process_item方法中接受爬虫文件提交过来的item对象,然后编写持久化存储的代码将item对象中存储的数据进行持久化存储.   4.在settings.py配置文件中开启管道 小试牛刀:将糗事百科首页中的段子和作者数据爬取下来,然后进行持久化存储.

Redis的那些最常见面试问题[精校版]

流过昼夜 提交于 2019-11-29 14:54:12
Address: https://www.cnblogs.com/Survivalist/p/8119891.html Name: 回首笑人间 1.什么是redis?    Redis 是一个基于内存的高性能key-value数据库。  2.Reids的特点      Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。    Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。    Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 3

Redis的最常被问到知识点总结

自闭症网瘾萝莉.ら 提交于 2019-11-29 13:18:11
1.什么是redis?    Redis 是一个基于内存的高性能key-value数据库。 2.Reids的特点      Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。    Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。    Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。 3.使用redis有哪些好处?    (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2

redis数据持久化

血红的双手。 提交于 2019-11-29 09:46:14
一、概念 一)redis提供了不同级别的持久化方式: RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储。 AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾,redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大。 如果你只希望你的数据在服务器运行的时候存在,你也可以不适用任何持久化方式。 也可以同时开启两种持久化方式,在这种情况下,当redis重启的时候会有限载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集比RDB文件保存的数据集要完整 二)RDB的优缺点 优点: RDB是一个非常紧凑的文件,它保存了某个时间点的数据集,非常适用于数据集的备份,这样即使出了问题你也可以根据需求恢复到不同版本的数据集。 RDB是一个紧凑的单一文件,很方便传送到另一个远端数据中心或者亚马逊的S3(可能加密),非常适用于灾难恢复。 RDB在保存RDB文件时父进程唯一需要做的就是fork出一个子进程,接下来的工作全部由子进程来做,父进程不需要再做其他IO操作,所以RDB持久化方式可以最大化redis的性能。 与AOF相比,在恢复大的数据集的时候,RDB方式会更快一些。 缺点: 如果希望在redis意外停止工作的情况下丢失的数据最少的话,那么RDB不适合