redis持久化

redis持久化_第1张图片一、Redis概述

 

 

Redis是一个高性能的NOSQL系列的非关系型,Redis是C语言编写的,基于内存(与MySQL基于硬盘不同,所以用作缓存)

 

所以Redis为什么这么快?

 

命令时基于内存

命令是单线程,没有上下文切换

基于IO多路复用机制

全局哈希表

 

 

 

 

二、常用五大数据类型

 

String、Hash、List、Set、ZSet

 

List:相当于Java的的LinkedList

 

Set:相当于JavaHashSet

 

 

 

 

 

三、Redis的事务和锁

 

开启事务(multi)

 

命令入队(…)

 

执行事务(exec)

 

放弃事务(discard)

 

Redis的事务不具有原子性,如果是编译型异常,则整个事务全部失败,如果是运行时异常,则只有单个命令失败

 

执行事务的时候,可以用watch锁某个值,如果被修改了则事务失败

 

Redis事务的特点

 

 

 

 

 

四、数据一致性

 

数据一致性包括RDB和AOF

 

1.RDB

 

什么是RDB?

 

在指定时间内,堆Redis保存一次快照,快照的名字叫做dump(默认30s)

 

RDB的优点:

 

适合大规模的数据恢复

按照业务定时备份

堆数据完整性和一致性要求不高

RDB文件在内存中加载的速度要比AOF快得多

RDB的缺点:

 

如果没有达到RDB保存文件的条件(比如第29s,redis挂掉),那么就不会保存

2.AOF

 

AOF是以日志的形式来记录每个写操作 ,将Redis执行过的所有写指令记录下来。

 

默认情况下,Redis没有开启AOF,开启AOF需要设置配置:appendonly yes

 

AOF持久化工作流程图

 

 

 

其中三种写回策略分别是

 

Always

Evecysec

每秒写回,每个命令执行完,把日志写到AOF文件缓冲区,每隔一秒把缓冲区的任务写入磁盘

 

No

 

 

 

 

AOF优点:更好的保护数据,可做紧急修复(把错误指令在日志删除即可)

 

缺点:AOF文件比RDB文件大,比RDB慢

你可能感兴趣的:(redis)