rdb

Redis Persistence(redis持久化)

我的梦境 提交于 2020-03-09 19:28:21
This page provides a technical description of Redis persistence, it is a suggested read for all Redis users. For a wider overview of Redis persistence and the durability guarantees it provides you may also want to read Redis persistence demystified . Redis Persistence Redis provides a different range of persistence options(redis提供了几种持久化方案可供选择): The RDB persistence performs point-in-time snapshots of your dataset at specified intervals.(RDB方式,即快照模式) The AOF persistence logs every write operation received by the server, that will be played again at server startup, reconstructing the original

Replication(副本,主从模式)

对着背影说爱祢 提交于 2020-03-09 17:27:41
At the base of Redis replication (excluding the high availability features provided as an additional layer by Redis Cluster or Redis Sentinel) there is a very simple to use and configure leader follower (master-slave 主从模式) replication: it allows replica Redis instances to be exact copies of master instances. The replica will automatically reconnect to the master every time the link breaks, and will attempt to be an exact copy of it regardless of what happens to the master. This system works using three main mechanisms(主从节点之间的数据复制,有以下三种机制): When a master and a replica instances are well

备战金三银四:2020java面试题分享,请查收

喜欢而已 提交于 2020-03-09 17:26:14
本文收录的面试题包括MySQL、Redis、java、JVM等相关内容。我相信很多人都在计划着跳槽,也或者在等金三银四的到来,请对找工作保持十二分的热情,而且越早准备越好。临时狂背知识点什么的,可能大致的都了解,细问就什么都不知道了,面试京东我也是提前一个月就开始准备了,毕竟不打无准备的仗 一:Java 1. 多个线程同时读写,读线程的数量远远大于写线程,你认为应该如何解决 并发的问题?你会选择加什么样的锁? 2. JAVA的AQS是否了解,它是干嘛的? 3. 除了synchronized关键字之外,你是怎么来保障线程安全的? 4. 什么时候需要加volatile关键字?它能保证线程安全吗? 5. 线程池内的线程如果全部忙,提交一个新的任务,会发生什么?队列全部 塞满了之后,还是忙,再提交会发生什么? 二、Spring 1. 你有没有用过Spring的AOP? 是用来干嘛的? 大概会怎么使用? 2. 如果一个接⼝有2个不同的实现, 那么怎么来Autowire一个指定的实现? 3. Spring的声明式事务 @Transaction注解x般写在什么位置? 抛出了异常 会自动回滚吗?有没有办法控制不触发回滚? 4. 如果想在某个Bean⽣成并装配完毕后执自己的逻辑,可以什么方式实 现? 5. SpringBoot没有放到web容器里为什么能跑HTTP服务? 三、MySQL 1.

Redis事务的设计与实现

筅森魡賤 提交于 2020-03-09 12:01:32
Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务功能, 本章首先讨论使用 MULTI 、 DISCARD 和 EXEC 三个命令实现的一般事务, 然后再来讨论带有 WATCH 的事务的实现。 因为事务的安全性也非常重要, 所以本章最后通过常见的 ACID 性质对 Redis 事务的安全性进行了说明。 事务 事务提供了一种“将多个命令打包, 然后一次性、按顺序地执行”的机制, 并且事务在执行的期间不会主动中断 —— 服务器在执行完事务中的所有命令之后, 才会继续处理其他客户端的其他命令。 以下是一个事务的例子, 它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令: redis> MULTI OK redis> SET book-name "Mastering C++ in 21 days" QUEUED redis> GET book-name QUEUED redis> SADD tag "C++" "Programming" "Mastering Series" QUEUED redis> SMEMBERS tag QUEUED redis> EXEC 1) OK 2) "Mastering C++ in 21 days" 3) (integer) 3 4)

Redis持久化存储(AOF与RDB)

心不动则不痛 提交于 2020-03-07 04:36:06
[TOC] 该部分其实在redis常用语法及设置里面有介绍 要看详细的话, 可以看这里 Redis持久化存储 一部分转自: https://blog.csdn.net/canot/article/details/52886923 不能说的秘密的博客 求知若饥,虚心若愚 一部分来自: http://redis.io/topics/persistence Redis持久化存储1(AOF与RDB两种模式) Redis中数据存储模式有2种:cache-only,persistence; cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一种安全性低/效率高/容易扩展的方式; persistence即为内存中的数据持久备份到磁盘文件,在服务重启后可以恢复,此模式下数据相对安全。 对于persistence持久化存储,Redis提供了两种持久化方法: Redis DataBase(简称RDB) Append-only file (简称AOF) 除了这两种方法,Redis在早起的版本还存在虚拟内存的方法,现在已经被废弃。 RDB概述 RDB是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。 优点:使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能

彻底理解Redis持久化

天大地大妈咪最大 提交于 2020-03-06 14:39:06
本文转自杨奇龙老师的公众号(yangyidba),他长期关注于数据库技术以及性能优化,故障案例分析,数据库运维技术知识分享,个人成长和自我管理等主题 前言 大家都知道Redis一个内存数据库,它支持2种持久化方式: RDB(Snapshot 内存快照) , AOF(append only file) 。持久化功能将内存中的数据同步到磁盘来避免Redis发生异常导致数据丢失的情况。当Redis实例重启时,即可利用之前持久化的文件实现数据恢复。 接下来,本文介绍两种持久化的运行机制和优缺点。 一 RDB RDB是默认的持久化方式,按照一定的策略周期性的将内存中的数据生成快照保存到磁盘。 每次快照持久化都是将内存数据完整写入到磁盘一次,并不 是增量的只同步脏数据。如果数据量大的话,而且写操作比较多,必然会引起大量的磁盘io操作,可能会严重影响性能。 1.1 快照持久化过程 1.2 触发机制 1. save 命令 当客户端向Redis server发送save命令请求进行持久化时,由于Redis是用一个主线程来处理所有,save命令会阻塞Redis server处理其他客户端的请求,直到数据同步完成。 2. bgsave命令 与save命令不同,bgsave是异步执行的,当执行bgsave命令之后,Redis主进程会fork 一个子进程将数据保存到rdb文件中,同步完数据之后

Redis 面试知识点笔记(六)Redis如何做持久化

蹲街弑〆低调 提交于 2020-03-02 06:51:08
问:Redis如何做持久化 AOF (Append-Only-File) 持久化:保持写状态 记录下除了查询以外的所有变更数据库状态的指令 以append的形式追加保存到aof文件中 默认redis.conf 是关闭的 always 总是写 everysec 每秒写一次(最常用) no 将写入操作交给操作系统决定,操作系统一般等到缓冲区满了才写入磁盘 ps:保存配置 重启生效 问:日志重写解决AOF文件大小不断增大的问题? 原理如下: 调用fork(),创建一个子进程 子进程把新的AOF写到一个临时文件里,不依赖原来的AOF文件 主进程持续将新的变动同时写到内存和原来的AOF里 主进程获取子进程重写AOF的完成信号,往新AOF同步增量变动 使用新的AOF文件替换掉旧的AOF文件 重写也可以手动触发(和bgsave一样)使用bgrewrite 指令 RDB和AOF文件共存情况下的恢复流程: RDB和AOF的优缺点: RDB优点:全量数据快照(二进制文件),文件小,恢复快 RDB缺点:无法保存最近一次快照之后的增量数据 AOF优点:可读性高,适合保存增量数据,数据不易丢失(刷盘是由appendfsync控制) AOF缺点:文件体积大,恢复时间长(人类可读的文本体积大,重启时指令回放,使用rewirte防止磁盘空间被撑满) RDB-AOF混合持久化模式(redis 4.0之后支持

redis redis的两种持久化机制

纵饮孤独 提交于 2020-03-01 14:05:51
Redis 提供了两种方式,实现数据的持久化到硬盘。 1、【全量】RDB 持久化,是指在指定的时间间隔内将内存中的 数据集快照 写入磁盘。实际操作过程是,fork 一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。 - 默认开启rdb持久化 2、【增量】AOF持久化,以日志的形式记录服务器所处理的每一个 写、删除操作 ,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。 - 默认关闭 每次写,删除操作就同步或者每秒同步 (1)RDB 优缺点 优点: 灵活设置备份频率和周期。你可能打算每个小时归档一次最近 24 小时的数据,同时还要每天归档一次最近 30 天的数据。通过这样的备份策略,一旦系统出现灾难性故障,我们可以非常容易的进行恢复。 非常适合冷备份,对于灾难恢复而言,RDB 是非常不错的选择。因为我们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上。推荐,可以将这种完整的数据文件发送到一些远程的安全存储上去,比如说 Amazon 的 S3 云服务上去,在国内可以是阿里云的 OSS 分布式存储上。 性能最大化。对于 Redis 的服务进程而言,在开始持久化时,它唯一需要做的只是 fork 出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行 IO 操作了。也就是说,RDB 对 Redis

Redis持久化机制:RDB和AOF

丶灬走出姿态 提交于 2020-03-01 13:15:10
Redis数据持久化 Redis作为一个 内存 数据库,数据是以内存为载体存储的,那么一旦Redis服务器进程退出,服务器中的数据也会消失。为了解决这个问题,Redis提供了持久化机制,也就是把内存中的数据保存到磁盘当中,避免数据意外丢失 Redis提供了两种持久化方案: RDB持久化 和 AOF持久化 ,一个是快照的方式,一个是类似日志追加的方式 RDB快照持久化 RDB持久化是通过 快照 的方式,即在指定的时间间隔内将内存中的数据集快照写入磁盘。在创建快照之后,用户可以备份该快照,可以将快照复制到其他服务器以创建相同数据的服务器副本,或者在重启服务器后恢复数据。RDB是Redis默认的持久化方式 快照持久化 RDB持久化会生成RDB文件,该文件是一个 压缩 过的 二进制文件 ,可以通过该文件还原快照时的数据库状态,即生成该RDB文件时的服务器数据。RDB文件默认为当前工作目录下的 dump.rdb ,可以根据配置文件中的 dbfilename 和 dir 设置RDB的文件名和文件位置 # 设置 dump 的文件名 dbfilename dump.rdb # 工作目录 # 例如上面的 dbfilename 只指定了文件名, # 但是它会写入到这个目录下。这个配置项一定是个目录,而不能是文件名。 dir ./ 触发快照的时机 执行 save 和 bgsave 命令 配置文件设置

Redis 配置数据持久化

不打扰是莪最后的温柔 提交于 2020-03-01 08:22:02
一、Redis提供了哪些持久化机制 1). RDB持久化: 该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。 2). AOF持久化: 该机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。 3). 无持久化: 我们可以通过配置的方式禁用Redis服务器的持久化功能,这样我们就可以将Redis视为一个功能加强版的memcached了。 4). 同时应用AOF和RDB。 5). 如果要开启AOF模式,修改Redis的配置文件redis.conf。 # 相关配置 appendonly yes #开启AOF模式 原文1 appendfilename "appendonly.aof" #保存数据的AOF文件名称 原文1 # appendfsync always appendfsync everysec #fsync模式 原文2 # appendfsync no no-appendfsync-on-rewrite no #原文3 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb #原文4 aof-load-truncated yes #原文5 官方文档解释如下: 原文1: By default Redis