redis主从同步与对象模型

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: redis主从同步与对象模型

redis淘汰策略

       因为redis是内存数据库,如果内存数据达到最大限定数据,这时再发送数据到redis,那如何限定这些行为;淘汰策略中有个键过期机制,时间到了我们把kv给删除掉,像expire/pexpire命令;kv中的v有个空转时长,每次操作v,都会记录操作v的时间;

       对于淘汰策略,我们有两个字段来配置,maxmemory和maxmemory-policy;maxmemory用于限制redis最多可以使用多少内存,通常会设置成操作系统内存的一半;maxmemory-policy用来指定淘汰策略;

redis持久化方式

       redis是内存数据库,我们不可能让redis一直运行下去,偶尔会让它重启,或将它部署到其它机器,所以需要将内存数据持久化到磁盘中,方便下一次启动redis时数据可以恢复到内存中;有四种持久化方式,其中有三种持久化方式需要fork进程;

       对应redis中扩容源码

       rgb持久化方式,是通过快照持久化到磁盘,快照是将内存中的数据直接持久化磁盘中;通过fork进程,子进程当中根据数据编码直接进行落盘;

       aof是拿单个数据进行持久化,而rdb是拿所有数据进行持久化,所以如果主进程宕机了,那么rdb丢数据是丢得最多的,所以我们要在可靠性和效率之间做一个平衡,所以就有一种rdb-aof的持久化方式,部分使用rdb持久化,部分使用aof持久化;redis默认是rdb的持久化方式;

高可用

       高可用是分布式中的概念, 比如redis宕机后,有个备用节点顶替;这个过程中要有数据同步和主从切换;高可用的程度是由主从切换时间来决定的;

       数据同步问题redis提供了主从复制,这个过程中是从往主中拉数据;主从是采用异步复制的方式;

       runid用于区分不同的主从节点,环形缓冲区决定了是全量数据同步,还是增量数据同步;

Redis 哨兵模式

       哨兵模式是 Redis 可用性的解决方案;它由一个或多个 sentinel实例构成 sentinel 系统;该系统可以监视任意多个主库以及这些主库所属的从库;当主库处于下线状态,自动将该主库所属的某个从库升级为新的主库;

       客户端来连接集群时,会首先连接 sentinel,通过 sentinel 来查询主节点的地址,然后再连接主节点进行数据交互。当主节点发生故障时,客户端会重新向 sentinel 索要主库地址,sentinel会将最新的主库地址告诉客户端。通过这样客户端无须重启即可自动完成节点切换;

       部署哨兵模式,要部署奇数个哨兵节点,它不存储任何数据,只是用来检测redis节点的状态和选主;

       这里client至少要建立两条连接,一条是需要和哨兵节点建立连接监听主从切换的消息,哨兵节点选取了主redis后,会通知client,一条是和主redis建立的连接;通过这种方式解决高可用的问题,由故障转移时间决定高可用性;

cluster集群

       依然由主从关系,但这里由多个主节点,通常取奇数个主节点,这些节点之间构成了一个系统;这里有三个可用的用红框框起来的主节点,client连接上来可以往这三个主节点中写入数据,尽量使三个主节点的数据均衡;通过对kv中的key进行hash得到一个值,用这个值对主节点个数即3取余,这样可以把数据均衡的落到三个节点中;为了实现扩缩容分布式一致性hash不能用主节点个数取余,因为我们可能在现在有三个主节点的基础上在加一个主节点变成四个主节点,这里是对kv中的key通过hah得到的值用2^14取余;这里14我们可以想象成数组中有14个槽,每个槽位可以看成虚拟节点,把每个槽位映射到不同节点中,这样可以起到数据均衡的作用,这里每一个槽会对应节点真实的ip地址和端口;

       

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
20天前
|
存储 NoSQL Redis
08- 什么是 Redis 主从同步?
Redis主从同步是种数据备份机制,Slave从Master获取全量数据,之后持续接收增量更新。全量复制阶段包括Slave请求同步、Master拒绝增量并发送RDB到Slave、Slave加载RDB。增量复制阶段,Master使用repl_backlog存储命令并发送给Slave,Slave执行这些命令以保持与Master同步。该机制确保主从数据一致性,支持多个Slave和一个Master。
29 0
|
4月前
|
NoSQL Linux Redis
Redis原理之网络模型笔记
Redis采用单线程模型,这意味着一个Redis服务器在任何时刻都只会处理一个请求。Redis的网络模型涉及到阻塞I/O(Blocking I/O)、非阻塞I/O(Non-blocking I/O)、I/O多路复用(I/O Multiplexing)、信号驱动I/O(Signal-driven I/O)以及异步I/O(Asynchronous I/O)。
|
2月前
|
存储 NoSQL 算法
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)(二)
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)
49 0
|
5天前
|
存储 NoSQL Linux
Redis入门到通关之Redis5种网络模型详解
Redis入门到通关之Redis5种网络模型详解
21 1
|
2月前
|
存储 NoSQL Redis
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)(三)
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)
36 0
|
2月前
|
NoSQL Redis
[Redis]——主从同步原理(全量同步、增量同步)
[Redis]——主从同步原理(全量同步、增量同步)
114 2
|
3月前
|
存储 NoSQL Redis
Redis淘汰策略、持久化、主从同步与对象模型
Redis淘汰策略、持久化、主从同步与对象模型
90 0
|
4月前
|
缓存 NoSQL 安全
Redis 新特性篇:多线程模型解读
Redis 新特性篇:多线程模型解读
50 5
|
4月前
|
存储 缓存 NoSQL
Redis 数据结构+线程模型+持久化+内存淘汰+分布式
Redis 数据结构+线程模型+持久化+内存淘汰+分布式
311 0
|
缓存 移动开发 NoSQL
redis 主从同步-master端
redis 主从同步master端处理  redis 主从同步的过程始于一系列类似tcp三次握手的过程,归于"sync/psync"命令。分析redis主从同步master端的处理逻辑需要从syncCommand的函数开始进行分析。
1512 0