redis数据库
一、简介
redis是NoSQL数据库中应用较为广泛的非关系型内存数据库,他的内部是一个key--value的存储系统,但是他支持的存储类型相对来说是比较多的。eg:字符串、集合、列表、哈希类型。redis是一个基于内存运行并且支持持久化的非关系型数据库。
二、特点
1. 存储速度快,因为数据存储在内存中
2. 支持的存储类型比较多。eg:字符串、集合、列表、哈希类型
3. 自身支持持久化
4. 本身自带高可用架构,高可用架构配置方便
三、高可用架构---->>主从、哨兵模式(sentinel)
1.主从模式
优点:为了缓存redis主服务器的读写压力,redis自身支持主从复制和读写分离的架构,redis主从支持一主多从、级联架构。
缺点:存在单点故障
1)主从同步过程---->>全量同步(发生在主从同步建立起来的初期,从服务器需要获取主服务器的所有数据)、增量同步(发生在生产环境中,从服务器需要和主服务器保持数据的一致性)
①当从服务器连接主服务器时,从服务器会向主服务器发送一条SYNC;
②当主服务器接收到这个SYNC命令时,会触发主服务器去执行一条BGSAVE命令,生成RDB文件(后面会讲解RDB文件的作用);在执行这个命令的同时,主服务器会把此后所有写的命令全部记录在缓冲区当中;
③主服务器BGSAVE命令执行完毕之后,会把生成的RDB文件发送给所有的从服务器,并且此期间,还会一直在缓冲区中记录所有的写命令
④从服务器接收到RDB文件,会把所有的旧数据全部都丢掉;同步RDB文件的数据;
⑤主服务器发送RDB文件完之后,会把缓冲区中的命令发送给所有从服务器;
⑥从服务器加载完RDB文件之后,会把缓冲区中的命令也同步到数据库里。
2.哨兵模式(sentinel)--->>sentinel系统会监视1个或者多个redis master服务,以及这些master的所有的从服务;当某个master下线时,自动将master下的某一个从服务器提升到master继续处理请求
优点:解决了主从复制的单点问题
特点:
①主服务器下线时,会从从服务器里面随机挑选出一个提升为主服务器
②已下线的主服务器的从都改主服务器为新上任的主服务器
③如果旧的主服务器重新上线,那么他会担任新主服务器的从服务器
四、持久化
种类:AOF、RDB(快照)
原因:由于redis是缓存型数据,数据是存储在内存当中的,如果不做任何操作,那么服务器重新启动时候,内存中所有的数据都会清空,数据则会丢失,但是redis本身是支持数据持久化的!!!!
1. AOF--->>AOF持久化会记录服务器所有写的操作命令,并在服务器重新启动的时候,通过重新执行这些命令来还原数据,AOF文件中所有的命令是以redis协议来保存的,并且是追加的,文件是越来越大,但是不会超过实际数据的大小
2. RDB--->>RDB持久化会在一定的时间内或者一定的条件下生成RDB文件,也就是快照文件,当服务器重新启动,首先会加载这个RDB文件。
3. AOF、RDB是可以同时使用的,但是redis优先加载AOF文件来还原数据,因为AOF保存的比RDB保存的数据比较完整
4. 如果不开启持久化,redis是可以正常运行的,但是重启之后,数据就会丢失。
恢复速度---->>RDB比AOF快。具体使用则是根据不同生产环境,不同需求采用,同时还需要配合每种的持久化的策略。
五、应用场景
1. 读写量比较大的网站页面,把页面内容缓存到内存中,加快访问