数据持久化

redis持久化

拟墨画扇 提交于 2020-02-17 12:02:08
RDB持久化: 该机制是指在制定的时间间隔内将内存中的数据集快照写入磁盘。 是redis的默认持久化方式. 优点: 1.只有一份 rdb 文件,可随时备份 2.比 AOF 文件小,加载效率高 3.只提供 fork子进程,不阻塞主进程,IO操作比较少 AOF 持久化: 该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis 服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。与快照持久化相比,AOF持久化 的实时性更好,因此已成为主流的持久化方案。默认情况下Redis没有开启 AOF(append only file)方式的持久化,可以通过appendonly参数开启: appendonly yes 优点: 1.每次改动同步数据安全性好 2.APPEND方式追加日志,不会对旧日志文件产生影响 存在三种不同的 AOF 持久化方式 appendfsync always : 每次有数据修改发生时都会写入AOF文件,这样会严重降低Redis的速度 appendfsync everysec :每秒钟同步一次,显示地将多个写命令同步到硬盘 appendfsync no :让操作系统决定何时进行同步 为了兼顾数据和写入性能,用户可以考虑 appendfsync everysec选项 ,让Redis每秒同步一次AOF文件,Redis性能 几乎没受到任何影响

Redis简介

◇◆丶佛笑我妖孽 提交于 2020-02-17 06:35:38
1.Redis是什么? Redis(REmote DIctionary Server)远程字典服务器 是一个高性能的(Key/Value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,当前最热门的NoSQL数据库之一。 redis不仅仅支持key-value类型的数据,还提供list,set,zset,hash等数据结构的存储,且支持数据的备份(master-slave模式的数据备份),数据的持久化 2.能做什么? 内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务 取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面 模拟类似于HttpSession这种需要设定过期时间的功能 发布、订阅消息系统 定时器、计数器 来源: CSDN 作者: 灵魂coder-- 链接: https://blog.csdn.net/qq_41211642/article/details/104339652

如何设计一个本地缓存,涨姿势了!

不问归期 提交于 2020-02-15 16:22:06
作者: ksfzhaohui; https://my.oschina.net/OutOfMemory/blog/3133013 最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能。 当然如果拿来和专门的缓存框架如ehcache来对比可能稍有差距,本文我们将来整理一下实现一个本地缓存都应该需要考虑哪些东西。 考虑点 考虑点主要在数据用何种方式存储,能存储多少数据,多余的数据如何处理等几个点,下面我们来详细的介绍每个考虑点,以及该如何去实现; 1.数据结构 首要考虑的就是数据该如何存储,用什么数据结构存储,最简单的就直接用Map来存储数据;或者复杂的如redis一样提供了多种数据类型哈希,列表,集合,有序集合等,底层使用了双端链表,压缩列表,集合,跳跃表等数据结构; 2.对象上限 因为是本地缓存,内存有上限,所以一般都会指定缓存对象的数量比如1024,当达到某个上限后需要有某种策略去删除多余的数据; 3.清除策略 上面说到当达到对象上限之后需要有清除策略,常见的比如有LRU(最近最少使用)、FIFO(先进先出)、LFU(最近最不常用)、SOFT(软引用)、WEAK(弱引用)等策略; 4.过期时间 除了使用清除策略,一般本地缓存也会有一个过期时间设置

Redis持久化RDB、AOF

…衆ロ難τιáo~ 提交于 2020-02-15 06:02:00
持久化的意思就是保存,保存到硬盘。第一次接触这个词是在几年前学习EF。 为什么要持久化 redis定义:Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持 字符串 、 哈希表 、 列表 、 集合 、 有序集合 , 位图 , hyperloglogs 等数据类型。内置复制、 Lua脚本 、LRU收回、 事务 以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动 分区 。 可以看出redis是一个内存的数据库,但是如果redis服务停止,不就数据丢失了,所以他需要一套把内存数据保存到硬盘上的机制,其实redis服务重启的时候,他也会重新把硬盘上的数据读取到内存中。redis提供了两种持久化机制,快照(因为后缀为rdb,所以快照也叫做rdb)和aof。 RDB 什么是RDB 就是SNAPSHOTTING快照模式,分时间间隔把内存中的数据以二进制的形式写入硬盘中的一个.rdb后缀名的文件中(point-in-time snapshot)。这是redis默认的持久化方式。(rdb英文是redis database 缩写) 配置RDB ################################ SNAPSHOTTING ##########################

redis之RDB持久化与AOF持久化

吃可爱长大的小学妹 提交于 2020-02-15 06:01:30
Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。 因为Redis是内存数据库,它将自己的数据库状态储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。为了解决这个问题,Redis提供了RDB持久化功能,这个功能可以将Redis在内存中的数据库状态保存到磁盘里面,避免数据意外丢失。 RDB持久化功能所生成的RDB文件是一个经过压缩的 二进制文件 ,通过该文件可以还原生成RDB文件时的数据库状态。 1、RDB文件的创建与载入 有两个Redis命令可以用于生成RDB文件,一个是SAVE,另一个是BGSAVE. SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令请求 : redis> SAVE //等待直到RDB文件创建完毕 OK 和SAVE命令直接阻塞服务器进程的做法不同, BGSAVE命令会派生出一个子进程,然后由子进程负责创建RDB文件,服务器进程(父进程)继续处理命令请求 : redis> BGSAVE //派生子进程,并由子进程创建RDB文件 Background saving started

Redis数据持久化之RDB持久化

自闭症网瘾萝莉.ら 提交于 2020-02-15 06:01:19
因为Redis服务器将数据存储在内存里面,而一旦服务器被关闭或者运行服务器的主机本身被关闭的话,存储在内存里面的数据就会消失不见; 如果我们仅仅是将redis用作缓存的话,那么这种数据丢失带来的问题并不是非常大,我们只需要重启机器,然后再次将数据放到缓存里面就可以了; 但如果我们将redis用作数据库的话,那么这种数据丢失就不能接受了。 一、RDB持久化原理 将服务器包含的所有数据库数据以二进制文件的形式保存到硬盘里面。 通过在服务器启动时载入RDB文件,服务器可以根据RDB文件的内容,还原服务器原有的数据库数据。 二、创建RDB文件 Redis服务器在什么时候创建RDB文件? 1) 服务器执行客户端发送的SAVE命令;(手动执行) 2) 服务器执行客户端发送的BGSAVE命令;(手动执行) 3) 使用save配置选项设置的自动保存条件被满足,服务器自动执行BGSAVE命令;(自动执行) 2.1 手动创建RDB文件之SAVE命令 通过使用客户端向服务器发送SAVE命令,可以命令服务器去创建一个新的RDB文件; redis> SAVE OK 在执行SAVE命令时过程中(也就是创建RDB文件的过程中),redis服务器将被阻塞,无法处理客户端发送的命令请求,只有在SAVE命令执行完毕后(也就是RDB文件创建完毕之后),服务器才会重新开始处理客户端发送的命令请求;如果RDB文件已经存在

redis面试总结

眉间皱痕 提交于 2020-02-15 05:32:41
http://blog.csdn.net/guchuanyun111/article/category/6335900 ; https://www.cnblogs.com/Survivalist/p/8119891.html(更全) (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提供的持久化机制(RDB和AOF)

一世执手 提交于 2020-02-14 17:39:00
Redis提供的持久化机制     Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能、持久存储、适应高并发应用场景等优势。它虽然起步较晚,但发展却十分迅速。 近日,Redis的作者在博客中写到, 他看到的所有针对Redis的讨论中,对Redis持久化的误解是最大的 ,于是他写了一篇长文来对Redis的持久化进行了系统性的论述。 文章主要包含三个方面: Redis持久化是如何工作的、这一性能是否可靠以及和其它类型的数据库比较 。以下为文章内容: 一、Redis持久化是如何工作的?   什么是持久化?简单来讲就是将数据放到断电后数据不会丢失的设备中,也就是我们通常理解的硬盘上。 首先我们来看一下数据库在进行写操作时到底做了哪些事,主要有下面五个过程 : 客户端向服务端发送写操作(数据在客户端的内存中)。 数据库服务端接收到写请求的数据(数据在服务端的内存中)。 服务端调用write这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区中)。 操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中)。 磁盘控制器将数据写到磁盘的物理介质中(数据真正落到磁盘上)。 故障分析 写操作大致有上面5个流程, 下面我们结合上面的5个流程看一下各种级别的故障 : 当数据库系统故障时,这时候系统内核还是完好的。那么此时只要我们执行完了第3步

ActiveMQ持久化机制

ぃ、小莉子 提交于 2020-02-14 14:45:55
为什么要进行持久化   为了避免MQ服务器意外宕机导致数据丢失,需要做到重启后没有被消费的数据依然在消息队列中。 ActiveMQ的持久化机制包含:   1. JDBC:持久化到数据库   2. AMQ:日志文件   3. KahaBD:AMQ基础上改进,默认选择   4. LevelDB:谷歌K/V数据库   注:ActiveMQ默认是不开启持久化的。 ActiveMQ默认持久化机制     <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter>   性能:     AMQ的性能改与JDBC的持久化机制,由于是在文件中追加写入消息,所以性能比较高。并且创建了消息主键索引和缓存索引机制以提升性能。   缺点:     AMQ会为每一个Destination创建一个索引,若创建了大小的消息队列,则磁盘占用会非常大,所以由于索引文件比较大,当Broker崩溃后,重建所以速度比较慢。    JDBC持久化机制   步骤一:创建数据库        步骤二:在程序中开启持久化操作 producer.setDeliveryMode(DeliveryMode.PERSISTENT);     PERSISTENT:代表开启持久化     NON_PERSISTENT

redis的rdb和aof

断了今生、忘了曾经 提交于 2020-02-13 20:44:27
rdb rdb是基本的持久化机制,一般在以下几个时机进行持久化 1.redis服务启动 2.redis服务停止 3.redis周期性的调度持久化和操作多少次进行持久化 针对第1,2两点显然是必须的,第三点是为了保证数据安全,所以周期性的进行持久化,一般的思路就是遍历所有的key,持久化到一个临时文件,然后替换成真实的文件,这样就完成了新旧文件的覆盖了。 缺点 1.耗时长 遍历所有key,如果key非常多则消耗很多cpu时间,影响客户端对数据的请求,产生阻塞和延迟,因为redis又是单线程处理请求,其调度和处理用户请求是在同一个线程中进行的,所以,比较消耗cpu时间。而且老是进行磁盘写,对磁盘也是一种消耗,如果redis运行了很长时间,其内存占用达到几个G,那么这个写磁盘文件时间也是非常久的 2.对磁盘压力大 每次持久化都持久化所有数据,产生新临时文件,替换旧文件,非常消耗磁盘 3.容易丢数据 数据一致性无法得到保证,容易丢失短暂时间内的少量数据,但是如果瞬时请求量比较大,那么就会丢失大量数据了,因为是异步持久化 优点 内容紧凑,文件所占空间比aof比较小,比较合适冷备份 适用场景 对数据一致性要求不高 数据迁移和冷备份恢复 aof append only file 来源: https://www.cnblogs.com/weiguangyue/p/12302222.html