百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Redis的主从复制、事务控制、持久化、过期时间

mhr18 2024-10-23 11:35 26 浏览 0 评论

Redis的主从复制:

主从复制的好处:

1、读写分离,提高服务器的负载能力,可以根据读请求的规模,自由增加或减少从库的数量。

2、数据复制多份,单台机器出现故障,可以使用其他机器的数据快速恢复。需要注意的是,一个主库可以有多个从库,但一个从库只能隶属一个主库。

Slave启动并连接master之后会主动发送SYNC命令,之后master启动后台存盘进程,同时收集所有的用于修改数据集的命令,在后台进行执行完毕之后,master将传送整个数据库文件到slave,已完成一次完全的同步。Slave服务器在接收到数据库文件之后,将其存盘并加载到内存中,此后master将继续把所有已收集到的修改命令和新的已经收到的修改命令一次传送给slave,slave将在本次执行这些命令的修改,从而最终达到数据的同步。在这个过程中,如果master和slave之间的连接断开,slave可以重新自动连接master,但是在连接完成之后,一次完全同步将被自动执行。

Redis的事务控制:

一般情况下,Redis在接受一个客户端发来的命令后会立即处理并返回处理的结果,但是当一个客户端在一个链接中发出multi命令时,就会进入一个事务,该链接后续的命令并不会立即执行,而是先放到一个队列中。当次链接在接收到exec命令后,Redis会顺序地执行队列中所有命令,并将所有命令的返回结果打包到一起返回给客户端,结束事务。Redis事务是一个单独隔离的操作,事务中的所有命令都会序列化,按顺序地执行。同时,事务中的命令要么全部被执行,要么全部都不执行。

Redis持久化:

由于Redis的数据在内存中,当Redis重启后数据将丢失,所以需要将Redis的数据保存在磁盘,当Redis重启之后,可以从磁盘中恢复数据。Redis提供两种持久化方式:RDB持久化、AOF持久化。RDB指的是在指定的时间间隔内将内存中的数据集快照写入磁盘中,实际操作过程是启动一个子进程,再将数据集写入临时文件,写入成功之后再替换原来的文件,利用二进制进行压缩存储;AOF持久化使用日志的形式记录服务器每一个写和删除操作,查询操作不会被记录。AOF持久化以文本的方式记录,可以将AOF持久化文件打开,查看查看详细的操作记录。

RDB持久化的优势是,采用该方法,整个Redis数据库只会包含一个文件,通过不同的备份策略来保证系统的数据安全,一旦系统出现故障,可以非常容易进行恢复。对于灾难恢复而言,RDB很容易将一个单独的文件压缩后再转移到其他介质上。第三,对于Redis的服务进程而言,在开始持久化时只需要启动子进程,之后再由子进程完成持久化工作,这样可以实现性能的最大化。第四,相比于AOF机制,如果数据集非常大,RDB的启用效率更好。RDB持久化的劣势是,如果想保证数据的高可用性,即最大限度的防止数据的丢失,那么RDB不是很好的选择,因为系统一旦在定时持久化之前宕机,此前没有来得及写入磁盘的数据将会丢失。其次,RDB是通过启动一个子进程来协助实现持久化,因此当数据集较大时,可能导致整个服务器停止服务几百毫秒甚至1秒。

AOF持久化的优势是,可以带来更好的数据安全性,即数据的持久性。AOF有三种同步机制,每秒同步、每修改同步、不同步。每秒同步也是异步完成的,其效率非常高,但是一旦系统宕机,那么1秒中数据修改将会丢失。每修改同步,每次数据变化都会记录到磁盘中,这种方式在效率上最低。第二,由于AOF机制对日志的写入采用的是APPEND方式,因此在写入的过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。第三,如果日志过大,Redis可以自动启用重写机制。第四,AOF的日志相对来说格式清晰容易理解。AOF的劣势是,对于相同数量的数据集而言,AOF持久化的文件通常要大于RDB持久化的文件。RDB机制在恢复大数据集时,速度要比AOF机制快。第二,根据同步策略的不同,AOF持久化在运行效率上往往会慢于RDB持久化。

Redis实现过期时间:

1、惰性删除,不会在key过期是马上删除,而是当外部指定获取这个key时才会主动删除。处理的过程为 接收get执行——判断是否过期——执行删除操作——返回为空。

2、定期删除,设置一个时间间隔,每个时间端都会检测是否有key过期,如果有就执行删除操作。

MemCache与Redis的区别:

1、丰富的数据类型。MemCache的值都是简单的字符串,Redis作为替代者,支持更多的数据类型,如字符串,hash,列表,集合,有序集合。

2、内存管理机制不同。Redis中,并不是所有的数据都是一直存储在内存中的,这是与MemCache最大的区别。当物理内存用完,Redis可以将很久没有使用的值交换到磁盘。Redis只会缓存所有key的信息,如果内存使用的量超过了某一个阈值,将触发swap操作,计算出哪些key对应的值将会储存到磁盘,然后将这些key对应的值持久化到磁盘中,同时在内存中清除。这种特性可以使得Redis保存超过其内存大小的数据。

3、过期时间的处理方式不同。Redis使用惰性删除+定期删除,MemCache使用惰性删除。

4、Redis支持持久化数据,MemCache不支持持久化。

5、Redis支持事务,MemCache不支持事务。

6、集群管理不同。MemCache不支持分布式,因此只能在客户端,通过类似一致性hash分布式算法来实现分布式存储。客户端向MemCache集群发送数据之前,首先会通过内部的分布式算法计算出该条数据的目标节点,然后将该数据发到该节点上。客户端查询数据时,同样要计算出数据所在的节点,直接向该节点发送查询请求。Redis更偏向于服务端构建分布式存储,最新版本Redis已经支持分布式存储功能rediscluster:实现了分布式且允许单点故障的Redis高级版本,没有中心节点,具有延伸性,可伸缩功能。

相关推荐

Redis合集-使用benchmark性能测试

采用开源Redis的redis-benchmark工具进行压测,它是Redis官方的性能测试工具,可以有效地测试Redis服务的性能。本次测试使用Redis官方最新的代码进行编译,详情请参见Redis...

Java简历总被已读不回?面试挂到怀疑人生?这几点你可能真没做好

最近看了几十份简历,发现大部分人不是技术差,而是不会“卖自己”——一、简历死穴:你写的不是经验,是岗位说明书!反面教材:ד使用SpringBoot开发项目”ד负责用户模块功能实现”救命写法:...

redission YYDS(redission官网)

每天分享一个架构知识Redission是一个基于Redis的分布式Java锁框架,它提供了各种锁实现,包括可重入锁、公平锁、读写锁等。使用Redission可以方便地实现分布式锁。red...

从数据库行锁到分布式事务:电商库存防超卖的九重劫难与破局之道

2023年6月18日我们维护的电商平台在零点刚过3秒就遭遇了严重事故。监控大屏显示某爆款手机SKU_IPHONE13_PRO_MAX在库存仅剩500台时,订单系统却产生了1200笔有效订单。事故复盘发...

SpringBoot系列——实战11:接口幂等性的形而上思...

欢迎关注、点赞、收藏。幂等性不仅是一种技术需求,更是数字文明对确定性追求的体现。在充满不确定性的网络世界中,它为我们建立起可依赖的存在秩序,这或许正是技术哲学最深刻的价值所在。幂等性的本质困境在支付系...

如何优化系统架构设计缓解流量压力提升并发性能?Java实战分享

如何优化系统架构设计缓解流量压力提升并发性能?Java实战分享在高流量场景下。首先,我需要回忆一下常见的优化策略,比如负载均衡、缓存、数据库优化、微服务拆分这些。不过,可能还需要考虑用户的具体情况,比...

Java面试题: 项目开发中的有哪些成长?该如何回答

在Java面试中,当被问到“项目中的成长点”时,面试官不仅想了解你的技术能力,更希望看到你的问题解决能力、学习迭代意识以及对项目的深度思考。以下是回答的策略和示例,帮助你清晰、有说服力地展示成长点:一...

互联网大厂后端必看!Spring Boot 如何实现高并发抢券逻辑?

你有没有遇到过这样的情况?在电商大促时,系统上线了抢券活动,结果活动刚一开始,服务器就不堪重负,出现超卖、系统崩溃等问题。又或者用户疯狂点击抢券按钮,最后却被告知无券可抢,体验极差。作为互联网大厂的后...

每日一题 |10W QPS高并发限流方案设计(含真实代码)

面试场景还原面试官:“如果系统要承载10WQPS的高并发流量,你会如何设计限流方案?”你:“(稳住,我要从限流算法到分布式架构全盘分析)…”一、为什么需要限流?核心矛盾:系统资源(CPU/内存/数据...

Java面试题:服务雪崩如何解决?90%人栽了

服务雪崩是指微服务架构中,由于某个服务出现故障,导致故障在服务之间不断传递和扩散,最终造成整个系统崩溃的现象。以下是一些解决服务雪崩问题的常见方法:限流限制请求速率:通过限流算法(如令牌桶算法、漏桶算...

面试题官:高并发经验有吗,并发量多少,如何回复?

一、有实际高并发经验(建议结构)直接量化"在XX项目中,系统日活用户约XX万,核心接口峰值QPS达到XX,TPS处理能力为XX/秒。通过压力测试验证过XX并发线程下的稳定性。"技术方案...

瞬时流量高并发“保命指南”:这样做系统稳如泰山,老板跪求加薪

“系统崩了,用户骂了,年终奖飞了!”——这是多少程序员在瞬时大流量下的真实噩梦?双11秒杀、春运抢票、直播带货……每秒百万请求的冲击,你的代码扛得住吗?2025年了,为什么你的系统一遇高并发就“躺平”...

其实很多Java工程师不是能力不够,是没找到展示自己的正确姿势。

其实很多Java工程师不是能力不够,是没找到展示自己的正确姿势。比如上周有个小伙伴找我,五年经验但简历全是'参与系统设计''优化接口性能'这种空话。我就问他:你做的秒杀...

PHP技能评测(php等级考试)

公司出了一些自我评测的PHP题目,现将题目和答案记录于此,以方便记忆。1.魔术函数有哪些,分别在什么时候调用?__construct(),类的构造函数__destruct(),类的析构函数__cal...

你的简历在HR眼里是青铜还是王者?

你的简历在HR眼里是青铜还是王者?兄弟,简历投了100份没反应?面试总在第三轮被刷?别急着怀疑人生,你可能只是踩了这些"隐形求职雷"。帮3630+程序员改简历+面试指导和处理空窗期时间...

取消回复欢迎 发表评论: