Redis----线程模型与持久化

ESXi 6.7升级17700523补丁全流程:从下载到验证的保姆级教程 本文提供ESXi 6.7升级17700523补丁的完整流程指南,涵盖从下载、上传到验证的详细步骤。通过SSH命令和vSphere Client操作,确保系统管理员能够安全高效地完成补丁升级,提升虚拟化环境的安全性和稳定性。 阅读详情

线程模型

一.Redis是单线程吗

Redis处理客户端请求进行数据读写是由一个主线程完成的,也就是常说的Redis是单线程的,天然不存在并发问题,但并不是说Redis就只有一个进程,其在某 些时候还会开启后台子进程,如AOF日志重写, RDB异步持久化(bgsave)。

二.Redis为什么是单线程却还这么快

基于内存操作:Redis速度快的直接原因是因为其是基于内存的,绝大多操作都是在内存中之直接进行的,速度极快,可以用一个线程处理众多客户端请求而不会出现性能瓶颈,而且还可以避免并发问题,不存在线程切换带来的额外性能消耗。

底层数据结构优化:Redis还对底层数据结构做了许多优化 比如String有三种编码方式在不同的情况下采用不同的编码方式减少内存空间申请次数,避免出现内存碎片,如渐进式rehash在扩容时不会阻塞。

I/O多路复用: 采用I/O多路复用机制,一个线程同时监听多个Socket连接,达到一个线 程处理多个连接的效果。

三.Redis6.0多线程的引入

Redis的绝大多数操作都在内存中直接完成,其性能瓶颈不在CPU更多是在网络I/O的限制,核心命令的执行一个线程足以,如果在此处引入多线程反而会因为线程上下文切换,以及并发问题导致性能降低。

随着网络硬件性能提升,Redis的性能瓶颈出现在了网络I/O处理上,为了提高网络I/O并 行度,Redis6.0对于网络I/O采用多线程处理,解决网络I/O方面的性能瓶颈

持久化

一.Redis如何实现数据不丢失

Redis基于内存数据都是存储在内存中,重启或宕机后数据会被清空,Redis通过AOF日志与RDB快照将数据持久化在磁盘中,重启时从磁盘中读取恢复原有数据

二.RDB

RDB快照: 数据快照,直接将内存中的数据记录到磁盘中

save:主进程执行RDB,阻塞所有命令

bgsave:子进程异步RDB,不影响主进程

RDB默认触发机制: 900秒内 至少一个key被修改 执行bgsave异步持久化

*RDB是全量快照 每次执行都把所有数据记录到磁盘中,RDB操作本身消耗的系统资 源较多,执行频率不能过高,否则会造成Reids性能降低,所以数据丢失的可能性高 于AOF

RDB执行流程: 执行bgsave命令 fork一个子进程进行异步RDB持久化,子进程创建时会赋值父进程的页表,即父子进程的虚拟内存由相同的页表指向相同的物理内存实现了内存共享,即在进行RDB时无需先进行内存拷贝,fork的耗时大大降低,此时再由子进程读取内存数据并写入到新的RDB文件中替换旧文件,实现异步持久化。

copy-on-write:异步持久化意味着子进程进行RDB持久化时候,父进程任然可以进行数据修改,可能会出现读写冲突,甚至是出现脏数据,采用copy-on-write方案(写时复制)解决,首先会将数据标记为read-only只读模式,当主进程发起数据更新请求时不会直接操作原数据,而是将数据拷贝一份,页表的映射关系也会同步改变映射为拷贝后的副本数据,主进程的读写操作都会变更到副本数据上,极端情况下,若RDB异步持久化过程中,父进程不断接收到数据更新请求,那么会导致大量数据都创建副本,对内存的占用会翻倍.

RDB优缺点:备份之间间隔长数据丢失可能性大,RDB操作本身对系统资源占用高;文件体积小,直接存储数据重启速度快

三.AOF日志

AOF日志: 每执行一条写操作命令,就把该命令以追加的方式写入到一个文件里

always: 同步刷盘,每次写操作命令执行后立即记录到AOF文件中,可靠性高,数据几乎不会丢失 性能较低,影响后续操作

everysec: 每秒刷盘,命令先存放在AOF缓冲区中,每隔1秒将缓冲区数据写入到AOF文件中,最多丢失1秒数据,性能适中,可靠性较高

no: 先将命令写入AOF缓冲区中,由操作系统决定磁盘写入时机,性能最高,可靠性差,可能丢失大量数据

AOF重写机制: 随着时间的增长 AOF文件的体积越来越大,且会重复记录对一个key的多次操作,会记录中途多余的无效命令

bgrewriteaof: 开启一个子进程进行AOF文件重写,不阻塞主进程,主进程可以正常处理请求,父子进程共享同一份物理内存,子进程对内存是只读的,重新读取Redis中的所有数据,逐一把数据键值转换成命令记录到AOF日志中但是重写过程中,主进程依然可以正常处理命令,与RDB类似采用写时复制方案,Redis设置了AOF重写缓冲区,在AOF重写期间,Reids执行一个数据 修改的命令后会将该命令同时写入AOF缓冲区与AOF重写缓冲区,当子进程的AOF 重写完成后再将AOF重写缓冲区的数据追加到AOF日志中

AOF日志优缺点: 文件体积相对大 Redis重启时重新执行命令重启速度慢;数据丢失 可能性更低 AOF本身消耗的系统资源更低(重写时消耗资源多)

四.混合持久化

Redis混合持久化 Redis4.0采用混合持久化保证重启速度同时,减低数据丢失风险

为什么要有混合持久化? RDB持久化重启速度快,但执行频率不好把握,过高影响 Redis自身性能,执行频率过低数据丢失风险大;AOF持久化数据丢风险低,重启速度慢

混合持久化: 混合持久化发生在AOF重写过程中,AOF重写时fork出的子进程首先会将与父进程共享的内存数据以RDB方式写入到AOF文件中,然后父进程执行的数据更新命令会记录在AOF重写缓冲区中,再将重写缓冲区中的内容追加到追加到AOF文件中,也就是说开启混合持久化,AOF文件中前半段是RDB格式的数据后半段是AOF格式的增量数据;既可以提升重启速度也降低了数据丢失的风险

老版QQ原生表情gif动态 这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。 立即下载

相关推荐

配置权重_高盛都在用的资产配置模型,BL贝叶斯框架改进Markowitz

前面我们说到,markoviz的均值-方差模型,第一次,用数学的方式严格证明了投资组合存在最优的权重,但它的学术意义大于实战。主要原因有两个:1,人们很难有效的预测期望收益率;2,最优资产组合配置对输入非常敏感,结果往往难以被人理解。还有就是在投资中,定量只是完成初步构建,同步的定性判断依然非常重要:第一,投资者的认知偏好:倾向于关注他们认为被低估,但有发展潜力或者可以确定相对交易价值的小部分股票...

weixin_39892309的博客 716

Redis进阶一之线程模型、数据持久化

Redis采用混合线程模型:核心命令执行保持单线程,通过I/O多路复用处理多连接,6.0+版本引入多线程辅助网络I/O。持久化提供RDB和AOF两种策略:RDB通过定时快照实现高效备份但可能丢数据,AOF记录写操作更安全但性能较低。生产环境建议根据需求选择,重要数据可同时开启RDB+AOF,RDB用于全量备份,AOF确保最小化数据丢失。

weixin_43728956的博客 322

手把手教你用Node.js模拟大麦APP下单请求(含滑块验证处理)

本文详细解析了如何使用Node.js模拟大麦APP下单请求的全流程,包括接口逆向、滑块验证处理和签名算法逆向等关键技术。通过实战案例和代码示例,帮助开发者掌握移动端API调用的核心要素,如动态参数构造、安全验证突破等,提升自动化下单的成功率和效率。

weixin_42569329的博客 355

Redis 的数据类型、线程模型和持久化机制

Redis 使用操作系统提供的 I/O 多路复用机制,可以同时监听多个客户端的 socket 连接。当某个 socket 可读/可写时,操作系统会通知 Redis,Redis 再去处理对应的请求。Redis 的核心逻辑(命令解析、数据读写)是单线程的。优点:结合了 RDB 恢复快和 AOF 更安全的优点,启动时先加载 RDB,再加载少量 AOF 日志。机制:在重写 AOF 时,先把内存快照(RDB方式)写入 AOF 文件开头,后续再追加命令日志。存储键和值的映射,适合存储对象(如用户信息)。

daphneordera的博客 467

从零构建高精度温控系统:ADN8835的单电感拓扑与0.01℃稳定性实战解析

本文深入解析了如何利用ADN8835构建高精度温控系统,重点介绍了其创新的单电感拓扑架构如何实现0.01℃的长期稳定性。内容涵盖精密PCB布局、电源滤波设计,并详细阐述了针对不同热容负载的数字PID控制参数整定策略,为开发精密仪器和医疗设备提供了实战指南。

r2s3t4的博客 240

Depth Anything 3实战:如何用DINOv2 Transformer一键生成3D高斯点云?

本文详细介绍了Depth Anything 3(DA3)模型如何利用DINOv2 Transformer架构,实现从单张或多视角图像一键生成高质量3D高斯点云。DA3通过统一的深度-射线表示和自适应注意力机制,简化了传统复杂的3D重建流程,并可直接微调用于3D高斯渲染,为图形学、CV和内容创作领域提供了高效的端到端解决方案。

postgres8guard的博客 722

Redis常见面试题大白话简答,关于认识Redis及其数据结构、线程模型和持久化

本文仅包括小林coding中Redis面试篇中关于认识Redis、Redis的数据结构、Redis线程模型和Redis持久化部分

andrew_1219的博客 1043

RTKLIB PPP与RTK_POST精密定位实战:从实时到事后处理的完整流程解析

本文详细解析了如何使用RTKLIB进行精密单点定位(PPP)的完整流程,涵盖从实时处理到事后处理(RTK_POST)的关键步骤。文章深入探讨了数据准备、软件配置、核心参数设置(如电离层、对流层、潮汐改正)以及常见问题排查,旨在帮助用户掌握高精度GNSS定位技术,实现从入门到精通的实战应用。

weixin_29047919的博客 280

Redis入门总结(一):redis配置文件,五种数据结构,线程模型和持久化方式

(尊重劳动成果,转载请注明出处:https://yangwenqiang.blog.youkuaiyun.com/article/details/90321396冷血之心的博客) 关注微信公众号(文强的技术小屋),学习更多技术知识,一起遨游知识海洋~ 快速导航: Redis入门总结(一):redis配置文件,五种数据结构,线程模型和持久化方式 Redis入门总结(二):主从复制,事务和发布订阅...

冷血之心的博客 2692

三相电机控制中的端电压、相电压与线电压波形解析

本文深入解析了三相电机控制中端电压、相电压与线电压的核心概念与波形差异。通过对比方波控制、SPWM和SVPWM三种主流控制策略下的实测波形特征,揭示了不同控制逻辑对电压波形(如梯形波、正弦波、马鞍波)的影响。文章重点阐述了SVPWM控制如何通过生成马鞍波形端电压来提高直流母线电压利用率,并提供了实用的波形测量与调试指南,帮助工程师深入理解电机控制原理并进行有效调试。

qsc901234567的博客 1402

RK3588 Linux启动优化至亚秒级全链路剖析

本文深入探讨RK3588平台Linux系统启动加速技术,涵盖从BL1/ATF安全固件、U-Boot剪裁到内核精简化等全链路优化方案,实现从上电到用户脚本800ms内完成的实战经验。​​文末提供完整解决方案获取方式​​。由于在 ARMv6 之后引入了 TrustZone 模块, 目前市面上 ARMv7 和 ARMv8 之后的系统都会包含了该模块, 这个模块由 BL1 启动, 且在 ATF(ARM Trust Firmware) 固件中, 既安全世界中引导到 BL33 (UBOOT)的系统。

韩若明溪 1777

【Redis】Redis 的线程模型,为什么 Redis 要把所有数据放到内存?Redis 的同步机制,Redis 持久化,RDB 持久化方式

其次现在硬件越来越便宜的情况下,Redis 的使用也被应用得越来越多,使得它拥有很大的优势。多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 socket,会将 socket 产生的事件放入队列中排队,事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理。RDB 就是快照/内存快照,RDB持久化是把当前进程数据生成快照保存到磁盘上的过程,由于是某一时刻的快照,那么快照中的值要早于或者等于内存中的值。多个 socket。

2301_79456272的博客 915

图神经网络实战——利用节点回归预测网络流量

在机器学习中,回归指的是对连续值的预测。通常与分类形成鲜明对比,分类的目标是找到正确的类别(即离散值,而非连续值)。在图数据中,分类和回归分别对应于节点分类和节点回归。在本节中,我们将尝试预测每个节点的连续值,而非分类变量。

盼小辉丶的博客 1万+

Redis - 核心原理深度解析:线程模型、持久化与高可用性

Redis作为当前最流行的缓存中间件,凭借其高性能和高可用性成为分布式系统中的核心组件。接下来 将深入剖析Redis的线程模型、数据持久化机制及高可用方案,全面掌握Redis的核心原理。通过深入理解Redis的线程模型、持久化机制与高可用架构,开发者能够更好地设计高性能、高可靠的缓存方案。在实际应用中,需根据业务场景灵活选择持久化策略与集群方案,持续优化系统表现。

小工匠 3237

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Redis线程模型、Redis持久化、Redis事务

Redis的线程模型、持久化、事务线程模型持久化事务 线程模型 持久化 事务 Redis事务就是一组命令的集合,一个事务中的所有命令都会被序列化 不保证原子性——一个事务中的几个命令,只有发生错误的命令不执行,其他命令执行。(数据库原子性是事务中所有语句都执行或都不执行) Redis事务中没有隔离级别,可以隔离其他客户端,将一个事务中的命令执行完后,再让其他客户端中的命令执行,不会发生交替执行 事务的命令不会直接去执行,执行exec(execute)命令时才执行事务中的命令 redis 的事务 开启事务

lanleihhh的博客 265

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Redis入门总结(一)redis配置文件,五种数据结构,线程模型和持久化方式

这篇文章主要总结了:什么是redis,redis的特点,配置文件,五种数据结构以及其底层实现原理,线程模型,缓存穿透,缓存雪崩以及缓存与数据库的读写不一致的问题;在此基础上,介绍了RDB和AOF两种数据持久化模式。

mr~li的博客 320

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Redis应用场景,线程模型,数据类型,持久化方式概述

博客链接:Cs XJH’s Blog 简介 Redis属于Nosql数据库,即非关系型数据库,以key-value形式将数据缓存到服务器内存中,线程安全且支持高并发。其他Nosql数据库还有MongoDB,MemCache等 大家或许会有疑问,为什么要使用非关系型数据库? 因为基于内存的数据库对数据的存取速度远快于基于硬盘的存取速度,也就是说,io操作会严重影响数据的存取速度 另外,还有其他工具可以实行缓存,那么它们与Redis的区别是什么? 其中,JVM缓存框架就属于这一类工具,有EhCache,Ca.

AmbHowie的博客 348

用思维导图解锁你的博客灵感宇宙!-----聊聊Redis的持久化、数据结构、线程模型^^

🚀 用思维导图解锁你的博客灵感宇宙!

2301_79898390的博客 482

Redis:持久化、线程模型、大 key

Redis 的读写操作都是在内存中,所以 Redis 性能才会高,但是当 Redis 重启后,内存中的数据就会丢失,那为了保证内存中的数据不会丢失,Redis 实现了数据持久化的机制,这个机制会把数据存储到磁盘,这样在 Redis 重启就能够从磁盘中恢复原有的数据。

“逛丢一只鞋”的博客 1149

Redis使用场景、Redis线程模型、Redis持久化 - 公开课笔记

redis和数据库怎么写同步? 分布式如何达到一致性? CAP 一致性、可用性、性能 HA:高可用,不存在没有任何时延、没有任何波动的高可用 容忍度只要达标,就可以。不要为了技术而技术->你会否定你学的东西/你会被带节奏/你会拖延工作。合适的时间满足你的需求,开发搞定就可以了 redis使用场景 redis为什么不是关系型?因为缓存数据不完整,无法构建完整关系。 redis多线程,io可以多...

寒泉 6万+

Redis 的三个核心问题 —— 线程模型、数据持久化、高可用

首先要明白redis是一个数据库 Redis 是一个内存数据库, 所有数据基本上都存在于内存当中, 会定时以追加(AOF)或者快照(RDB) 的方式刷新到硬盘中. 由于Redis 是一个内存数据库, 所以读取写入的速度是非常快的, 所以经常被用来做数据, 页面等的缓存。 线程模型: Redis 只有单线程吗? Redis 是单线程的,主要是指 Redis 的网络 I/O 线程,键值对的 set() get() 等读写操作,Redis 的持久化、集群同步等操作,则是由另外的线程来执行。 Redis 采用单线

tototototoo的博客 401

Redis中两种持久化机制RDB和AOF和线程模型

redis线程模型 redis是单线程模型,但是采用的是io多路复用模式(也就是非阻塞方式),这种模式下,在接收到用户请求后,多路复用器发送到文件事件分配器的速度就会很快(不需要等待上一个请求获得回复即可处理下一个请求),又由于是单线程模型,所以避免了上下文切换带来的损耗。另外在文件事件分配器这个地方,进行的是纯内存操作,因此速度会非常快。 RDB RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动red

qq_40297844的博客 785

Redis线程模型、原子性保证与持久化机制底层原理

Redis线程模型与数据持久化核心机制解析 线程架构:Redis采用混合线程模型,网络I/O处理使用多线程(6.x+版本),而核心命令执行保持单线程,通过I/O多路复用技术实现高效事件处理,避免并发冲突。 原子性保障:提供5种方案确保操作原子性: 复合指令(如SETEX) 事务机制(MULTI/EXEC) Pipeline批量操作 Lua脚本(完全原子执行) Redis 7 Function(服务端函数式编程) 持久化机制: RDB:定时生成内存快照,恢复速度快但可能丢失最新数据 AOF:记录所有写操作命令

coding 353

深⼊理解 Redis 线程模型、持久化机制、高可用机制及分布式集群的实现,熟练掌握 Redis 的核⼼数据结构的使⽤场景,熟悉各种缓存⾼并发的使⽤场景⽐如缓存雪崩,缓存穿透等。

**集群模式(Cluster)**:Redis Cluster通过分片来提供数据的自动分区,每个分片可以有多个副本,提高了系统的可扩展性和容错性。- **监控和调优**:使用Redis监控工具,如`redis-cli --stat`,来监控性能并根据需要调整配置。主节点负责写操作,从节点复制主节点的数据。- **缓存雪崩**:当大量缓存在同一时间过期,导致大量请求直接打到数据库,可以通过设置不同的过期时间来避免。- **缓存穿透**:查询不存在的数据,导致数据库压力增大,可以通过布隆过滤器来预防。

靡不有初,鲜克有终 953

Redis学习笔记01 (数据结构,线程模型,持久化)

个人redis学习笔记

m0_63691156的博客 978

Redis之理解线程模型与数据安全

Redis是一个高性能的键值存储系统,支持多种数据结构,具备持久化能力,可作为缓存、数据库和向量搜索引擎。其单线程模型通过IO多路复用实现高并发处理,性能瓶颈主要在内存和网络。Redis提供多种保证指令原子性的方法,包括复合指令、事务、管道、Lua脚本和Redis Function(7.0+)。bigkey排查需谨慎执行以避免影响性能。数据安全性方面,Redis支持RDB快照和AOF日志两种持久化方式,各有优缺点:RDB适合备份和快速恢复,但可能丢失间隔期数据;AOF记录更完整但文件较大。实际应用中常结合使

qq_44784918的博客 1061
上一篇: 二叉树----9.二叉搜索树中第K小的元素
下一篇: 二叉树----10.二叉树的右视图
码破苍穹ovo
博客等级 码龄2年 377粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值