redis同步算法的简单介绍

玩转Redis的高可用(主从、哨兵、集群)1、Redis主从复制是指在一个Redis集群中,将一个Redis节点作为主节点,其余的Redis节点作为从节点 。主节点负责写入数据,从节点负责读取数据 。
2、Redis的哨兵机制就是解决主从复制存在缺陷(选举问题) , 解决问题保证我们的Redis高可用,实现自动化故障发现与故障转移 。要使用哨兵机制,除了启动Redis服务以外,还要启动哨兵服务来进行监控,会介绍详细步骤 。
3、redis高可用:如果你做主从架构部署,其实就是加上哨兵就可以了,就可以实现,任何一个实例宕机,自动会进行主备切换 。
4、哨兵模式就是在主从模式的基础上再加一个哨兵集群 。每个哨兵都会监控主节点和从节点的状态 。如果主节点挂了,就会从从节点中选出一个来作为主节点 , 以达到高可用的目的 。
5、redis哨兵和集群不能同时使用,Redis哨兵和集群是两种不同的Redis高可用方案 。
6、为了增加集群的可访问性,官方推荐的方案是将node配置成主从结构,即一个master主节点 , 挂n个slave从节点 。如果主节点失效,redis cluster会根据选举算法从slave节点中选择一个上升为master节点,整个集群继续对外提供服务 。
Redis持久化的几种方式——深入解析RDB1、AOF(append only file)持久化:以独立日志的方式记录每次写命令 , 重启时再重新执行AOF文件中的命令达到恢复数据的目的 。AOF的主要作用是解决了数据持久化的实时性 , 目前已经是Redis持久化的主流方式 。
2、RDB:RDB是一种快照持久化机制,它可以将Redis的内存数据周期性地写入磁盘上的一个文件中 。
3、redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件) 。
4、Redis有两种持久化的方式,一种是RDB,另外种是AOF 。RDB是将Redis内存中数据的快照存储在磁盘内 , 是Redis的默认持久化方案 。
5、Redis 混合持久化的存储模式是, 开始的数据以 RDB 的格式进行存储 ,因此只会占用少量的空间,并且之后的命令会以 AOF 的方式进行数据追加,这样就可以减低数据丢失的风险,同时可以提高数据恢复的速度 。
redis有哪些集群模式1、react配置redis有以下模式:主从模式,是最为简单的redis集群模式,主要工作模式是主从复制,主数据库可以执行读写功能,而从数据库只能执行读功能 。
2、/www/server/redis/src/redis-server /www/server/redis/redis.conf 查看redis是否在运行 ps aux|grep redis 现在是单机redis模式完成 。
3、传统的Redis集群采用的主从复制模式,一般为一主多从,主节点有读写权限 , 但是从节点只有读的权限 。主节点会定期将数据同步到从节点中,保证数据一致性的问题 。
4、哨兵模式就是在主从模式的基础上再加一个哨兵集群 。每个哨兵都会监控主节点和从节点的状态 。如果主节点挂了,就会从从节点中选出一个来作为主节点 , 以达到高可用的目的 。
5、redis的集群模式为了解决系统的横向扩展以及海量数据的存储问题,如果你的数据量很大,那么就可以用redis cluster 。
Redis的LRU缓存淘汰算法实现1、在实现LRU算法过程中,无非两种操作,查找和修改,使用散列数组实现查找时间复杂度为O(1) , 使用双向链表实现修改复杂度为O(1),并且双向链表还可以维护访问顺序,所以使用这种方式,可以达到O(1) 。
2、Redis使用的并不是完全LRU算法,而是近似LRU算法 。被删除的key也不一定是最满足LRU特征的key,而是通过近似LRU算法抽样,然后删除访问时间最古老的key 。
3、当要缓存某个数据的时候,先在链表中查找这个数据 。如果没有找到,则直接将数据放到链表的尾部;如果找到了 , 我们就把它移动到链表的尾部,然后淘汰头部数据 。
4、譬如,在一台 8G 机子上部署了 4 个 redis 服务点,每一个服务点分配 5G 的内存大?。跎倌诖娼粽诺那榭觯?由此获取更为稳健的服务 。
5、在实际应用中,LRU替换策略通常与其他策略结合使用,例如LFU(Least Frequently Used)策略,以进一步提高缓存的命中率和性能 。
redis主从复制最好采用哪种结构为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步 。下图为级联结构 。
演示集群采用1主2从 , 采用伪集群 , 在一台虚拟机中启动,端口暂定6386386383 , 集群结构可以选择下面2种,因为数量较少,此次采用普通样式 。
Redis主从复制可以将写入操作集中在主节点,提高写入性能 。同时从节点负责读取数据,可以分担主节点的读取负担,提高读取性能 。
Redis数据的过期与淘汰1、内存淘汰管理机制Memory Management 当内存占满之后,redis提供缓存淘汰机制 。
2、那对于过期数据,一般有三种方式进行处理:Redis的过期删除策略: 惰性删除 和 定期删除 两种策略配合使用 。spring-boot-starter-data-redis 包中提供了监听过期的类,对于key过期,需要得到通知,做业务处理的,可以做此监听 。
3、redis根据maxmemory-samples随机抽取一部分数据 , 将最旧的数据淘汰 , 指到内存降下来 。
4、随机移除某个 Key 。volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 Key 优先移除 。修改内存淘汰机制只需要在 redis.conf 配置文件中配置 maxmemory-policy 参数即可 。
5、然后在选到的key中选择.volatile-random:从已设置过期时间的哈希表(server.db[i].expires)中随机挑选key淘汰掉allkey-random:从所有的key的哈希表server.db[i].dict)中随机挑数据淘汰 。
【redis同步算法的简单介绍】6、但是实际上这还是有问题的,如果定期删除漏掉了很多过期 key,然后你也没及时去查 , 也就没走惰性删除,此时会怎么样?如果大量过期 key 堆积在内存里,导致 redis 内存块耗尽了,咋整?答案是:走内存淘汰机制 。

    推荐阅读