redis概述与持久化
一、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慢

浙公网安备 33010602011771号