redis主从同步与对象模型

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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数据库实现在线游戏中的游戏玩家积分排行榜功能。
目录
相关文章
|
4月前
|
存储 NoSQL 算法
Redis设计与实现——数据结构与对象
Redis 是一个高性能的键值存储系统,其数据结构设计精妙且高效。主要包括以下几种核心数据结构:SDS、链表、字典、跳跃表、整数集合、压缩列表。此外,Redis 对象通过类型和编码方式动态转换,优化内存使用,并支持引用计数、共享对象和淘汰策略(如 LRU/LFU)。这些特性共同确保 Redis 在性能与灵活性之间的平衡。
|
12月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
6月前
|
NoSQL 数据库 Redis
什么是 Redis 主从同步?
Redis 的主从同步(replication)机制,允许 Slave 从 Master 那里,通过网络传输拷贝到完整的数据备份,从而达到主从机制。 主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据。一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。 主从数据同步主要分二个阶段 : 第一阶段 : 全量复制阶段 ● slave节点请求增量同步 ● master节点判断replid,发现不一致,拒绝增量同步 ● master将完整内存数据生成RDB,发送RDB到slave ● slave清空本地数据,加载m
|
6月前
|
缓存 NoSQL 中间件
Redis的线程模型
Redis采用单线程模型确保操作的原子性,每次只执行一个操作,避免并发冲突。它通过MULTI/EXEC事务机制、Lua脚本和复合指令(如MSET、GETSET等)保证多个操作要么全成功,要么全失败,确保数据一致性。Redis事务在EXEC前失败则不执行任何操作,EXEC后失败不影响其他操作。Pipeline虽高效但不具备原子性,适合非热点时段的数据调整。Redis 7引入Function功能,支持函数复用,简化复杂业务逻辑。总结来说,Redis的单线程模型简单高效,适用于高并发场景,但仍需合理选择指令执行方式以发挥其性能优势。
158 6
|
11月前
|
存储 消息中间件 NoSQL
Redis 数据结构与对象
【10月更文挑战第15天】在实际应用中,需要根据具体的业务需求和数据特点来选择合适的数据结构,并合理地设计数据模型,以充分发挥 Redis 的优势。
223 64
|
10月前
|
监控 NoSQL 容灾
# Redis主从同步技术分享
Redis作为一个高性能的内存数据库,其主从同步机制是分布式环境下保证数据一致性的重要手段。本文将详细介绍Redis主从同步的实现方法,包括全量同步和增量同步,以及如何配置和监控主从同步状态。
|
12月前
|
消息中间件 存储 NoSQL
剖析 Redis List 消息队列的三种消费线程模型
Redis 列表(List)是一种简单的字符串列表,它的底层实现是一个双向链表。 生产环境,很多公司都将 Redis 列表应用于轻量级消息队列 。这篇文章,我们聊聊如何使用 List 命令实现消息队列的功能以及剖析消费者线程模型 。
303 20
剖析 Redis List 消息队列的三种消费线程模型
|
11月前
|
JSON 缓存 NoSQL
Redis 在线查看序列化对象技术详解
Redis 在线查看序列化对象技术详解
163 3
|
11月前
|
NoSQL Redis 数据库
Redis单线程模型 redis 为什么是单线程?为什么 redis 单线程效率还能那么高,速度还能特别快
本文解释了Redis为什么采用单线程模型,以及为什么Redis单线程模型的效率和速度依然可以非常高,主要原因包括Redis操作主要访问内存、核心操作简单、单线程避免了线程竞争开销,以及使用了IO多路复用机制epoll。
253 0
Redis单线程模型 redis 为什么是单线程?为什么 redis 单线程效率还能那么高,速度还能特别快
|
12月前
|
消息中间件 存储 NoSQL
18)Redis 的发布订阅模型
18)Redis 的发布订阅模型
161 0