range

If there were you, the world would be just right

一、内存回收策略

1. 删除到达时间的键对象。 
2. 内存使用达到maxmemory上限时触发内存溢出控制策略。

二、持久化

持久化的功能:Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令) 从内 存保存到硬盘。 当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。Redis持久化 分为 RDB持久化和AOF持久化,前者将当前数据保存到硬盘,后者则是将每次执行的写命令保存到硬盘。

2.1. RDB持久化
    RDB是一种快照存储持久化方式,具体就是将Redis某一时刻的内存数据保存到硬盘的文件当中,默认保存的文件名为dump.rdb,而在Redis服务器启动时,会重新 加载dump.rdb文件的数据到内存当中恢复数据。触发 RDB 持久化过程分为手动触发和自动触发。

    手动触发分别对应 save 和 bgsave 命令 
        save 命令:阻塞当前 Redis 服务器,直到 RDB 过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用。 
        bgsave 命令:Redis 进程执行 fork 操作创建子进程,RDB 持久化过程由子进程负责,完成后自动结束。阻塞只发生在 fork 阶段,一般时间很短。显然 bgsave 命令是针对 save 阻塞问题做的优化。因此 Redis 内部所有的涉及 RDB 的操作都采用 bgsave 的方式 
    除了执行命令手动触发之外,Redis 内部还存在自动触发RDB 的持久化机制,例如以下场景: 
        1. 使用 save 相关配置,如“save m n”。表示 m 秒内数据集存在 n 次修改时,自动触发 bgsave。 
        2. 如果从节点执行全量复制操作,主节点自动执行 bgsave 生成 RDB 文件并发送给从节点。 
        3. 执行 debug reload 命令重新加载 Redis 时,也会自动触发 save 操作。 
        4. 默认情况下执行shutdown命令时,如果没有开启 AOF 持久化功能则自动执行 bgsave

2.2 AOF持久化
    AOF(append only file)持久化:与RDB存储某个时刻的快照不同,AOF持久化方式会记录客户端对服务器的每一次写操作命令到日志当中,并将这些写操作 以 Redis协议追加保存到以后缀为aof文件末尾。
    开启 AOF 功能需要设置配置:appendonly yes,默认不开启。AOF 文件名通过 appendfilename 配置设置,默认文件名是 appendonly.aof。保存路径同 RDB 持久 化方式一致,通过 dir 配置指定

三、redis主从

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到 从节点。 

默认情况下,每台Redis服务器都是主节点,且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

Redis 复制问题,当主机 Master 宕机以后,我们需要人工解决切换,比如使用 slaveof no one 。实际上主从复制并没有实现 高可用。

四、哨兵机制

redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工讲从节点晋升为主节点,同时还要通知应用方更新主节点地址,那这就会存在着问题;哨兵 就是来处理这个问题的
    1. 主节点发生故障后,客户端连接主节点失败,两个从节点与主节点连接失败造成复制中断 
    2. 如果主节点无法正常确定,需要选出一个从节点升级为主节点,对它执行 slaveof no one 命令 
    3. 原来的从节点成为新的主节点后,更细应用方的主节点信息,重新启动应用方 
    4. 客户端命令另外一个从节点去复制新的主节点 
    5. 待原来的主节点恢复后,让它去复制新的主节点。

五、Redis 集群

Redis Cluster 是 Redis 的分布式解决方案,在3.0版本正式推出,有效地解决了 Redis 分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用 Cluster 架构方案达到负载均衡的目的。

使用集群好处
    1、将数据自动切分到多个节点的能力。
    2、当集群中的一部分节点失效或者无法进行通讯时,仍然可以继续处理命令请求的能力,拥有自动故障转移的能力。

添加新评论 »

在这里输入你的评论...