Redis持久化和分布式集群架构

一、Redis的事务
1. MySQL的事务的作用: 保证同一个事务内的多个SQL操作同时成功或者同时失败
        
2. Redis的事务的作用: 保证同一个事务内的多个Redis命令在执行的过程中,不会被其它客户端的命令插队

3. LUA脚本的作用: 保证多句Redis命令合并成一个原子操作


二、Redis的持久化
1. Redis为什么需要持久化?
    1.1 Redis的数据操作发生在内存中,如果不对数据做持久层,数据很有可能会发生丢失
    1.2 Redis中的数据为什么尽量保证不丢:
        (1). 有一些场景下,我们是先写缓存,然后定期写DB
        (2). 如果缓存数据丢了,你开机的时候刚好又突然来了大量的请求,这样的话Redis是无法拦截请求的,请求都会到达DB
    1.3 Redis怎么进行持久化?
        (1) RDB 快照模式
        (2) AOF 追加模式
        
2. Redis的快照模式: 在某些时间节点,对Redis整个内存中的数据进行一次快照保存
    2.1 哪些时间点会进行快照?
        (1) 手动快照
            (1.1) 执行save
            (1.2) 执行bgsave命令
            (1.3) 执行flushall命令
        (2) 自动保存
            (2.1) shutdown正常关机的时候
            (2.2) 按照配置的频率进行自动保存
    2.2 RDB的优劣势: 相较于AOF模式
        (1) 优势:
            (1.1) 持久化文件较小
            (1.2) 数据恢复速度较快
        (2) 劣势:
            (2.1) 数据可能会丢失比较多
            (2.2) 如果持久化频率过高,对性能影响较大
            
3. Redis的追加(AOF)模式: 以日志的方式记录写操作
    3.1 AOF 的持久化策略:
        (1) always :最安全                     ——每一句操作 都持久化
        (2) everysec :最常用    ——每秒 进行一次持久化
        (3) no :最快                     ——持久化时机由操作系统决定
    3.2 AOF 持久化的优缺点:
        (1) 优点:
            (1.1) 数据丢失较少
            (1.2) 便于重构数据(便于恢复到任意时刻数据)
            
        (2) 劣势:
            (2.1) 持久化文件体积大
            (2.2) 数据恢复速度慢
            
    3.3 AOF的文件重写
        意义:通过算法优化AOF文件,用最少的命令替换原本庞大的的数据资源

        默认的第一次文件重写,需要文件达到64MB,文件增长比达到100%,可以根据需求调节
        
        文件重写的频率一定要低!!!
        
三、Redis的主机和从机
1. 单机版的Redis存在哪些问题?
    1.1 单点故障问题
    1.2 读写压力大
    
2. 什么叫主从复制?
    Redis的主机负责处理写操作,Redis从机负责处理读操作,在这个过程中主机需要将数据同步给从机
    
3. 主从复制的优势?
    3.1 减少单点故障问题
    3.2 怎么实现主从复制: 一主两从
    
4. 主从复制架构的劣势?
    4.1 从机宕机之后,无法自动找到主机
    4.2 主机宕机之后,整个集群处于无法写的状态
    
四、哨兵架构
1. 哨兵能干啥?
    1.1 从机重启之后,会告诉从机它的主机是谁
    1.2 主机宕机之后,会自动选举出新的主机
    
五、Redis的分布式集群架构
1. Redis的主从架构存在哪些问题?
    容量无法扩展

2.分布式集群在逻辑上分成16384个数据槽(slot),同时设置多个主机和从机,将16384个槽分给多个主机,
当有写操作时,将通过哈希算法和对16384取模,所得到的余数在那个范围,就把数据分给哪个主机。

3.如果想要把一部分key落到同一个数据槽,则需要将key用大括号包裹起来。
    

    

你可能感兴趣的:(redis)