redis主从同步与对象模型

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容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
目录
相关文章
|
2月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
4月前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
22天前
|
存储 消息中间件 NoSQL
Redis 数据结构与对象
【10月更文挑战第15天】在实际应用中,需要根据具体的业务需求和数据特点来选择合适的数据结构,并合理地设计数据模型,以充分发挥 Redis 的优势。
54 8
|
2月前
|
消息中间件 存储 NoSQL
剖析 Redis List 消息队列的三种消费线程模型
Redis 列表(List)是一种简单的字符串列表,它的底层实现是一个双向链表。 生产环境,很多公司都将 Redis 列表应用于轻量级消息队列 。这篇文章,我们聊聊如何使用 List 命令实现消息队列的功能以及剖析消费者线程模型 。
95 20
剖析 Redis List 消息队列的三种消费线程模型
|
1月前
|
JSON 缓存 NoSQL
Redis 在线查看序列化对象技术详解
Redis 在线查看序列化对象技术详解
37 2
|
1月前
|
NoSQL Redis 数据库
Redis单线程模型 redis 为什么是单线程?为什么 redis 单线程效率还能那么高,速度还能特别快
本文解释了Redis为什么采用单线程模型,以及为什么Redis单线程模型的效率和速度依然可以非常高,主要原因包括Redis操作主要访问内存、核心操作简单、单线程避免了线程竞争开销,以及使用了IO多路复用机制epoll。
44 0
Redis单线程模型 redis 为什么是单线程?为什么 redis 单线程效率还能那么高,速度还能特别快
|
2月前
|
消息中间件 存储 NoSQL
18)Redis 的发布订阅模型
18)Redis 的发布订阅模型
33 0
|
2月前
|
NoSQL 安全 容灾
阿里云DTS踩坑经验分享系列|Redis迁移、同步
阿里云数据传输服务DTS在帮助用户迁移Redis数据、同步数据时,在某些复杂场景下会出现报错,或者源库与目标库数据不一致的问题,给用户带来困扰。本文介绍了DTS Redis到Redis迁移、同步过程中的典型问题,以帮助用户更好地使用DTS。
198 2
|
3月前
|
存储 NoSQL Redis
Redis存储原理与数据模型
Redis存储原理与数据模型
|
3月前
|
存储 缓存 NoSQL
Redis深度解析:部署模式、数据类型、存储模型与实战问题解决
Redis深度解析:部署模式、数据类型、存储模型与实战问题解决