当前位置: 首页 > wzjs >正文

网站建设有关要求做网络推广一般是什么专业

网站建设有关要求,做网络推广一般是什么专业,舞蹈培训机构网站建设,庆云网站建设欢迎来到啾啾的博客🐱。 这是一个致力于构建完善 Java 程序员知识体系的博客📚。 它记录学习点滴,分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 欢迎评论交流,感谢您的阅读😄。 引言 大家好…

欢迎来到啾啾的博客🐱。
这是一个致力于构建完善 Java 程序员知识体系的博客📚。
它记录学习点滴,分享工作思考和实用技巧,偶尔也分享一些杂谈💬。
欢迎评论交流,感谢您的阅读😄。

引言

大家好,这是 Redis 系列的开篇。
本系列旨在深入了解 Redis 的设计原理。
内容涵盖 Redis 的运行原理、设计思路、解决的问题以及应用场景。

Redis发展趋势与学习

Redis趋势

Redis版本流行情况参考阿里云Redis云原生可选版本,如下⬇️:
![[Pasted image 20250403150557.png]]

在Redis的官网中有写到

Redis 8 is the best version of Redis ever.

Redis8即将到来了。相较于现在流行的Redis5\6\7版本,Redis8有哪些改动呢?

其中最为人所知的应该就是异步IO线程的实现,我们也已线程改动为例,来一起窥见Redis发展趋势。

Redis线程从单线程IO发展到Redis6的多线程IO,再发展到Redis8的异步IO。反映了其在性能优化和适应现代硬件环境上的演进。

  • 单线程时代-2009年
    在单线程时代,Redis 的IO模型基于IO多路复用和非阻塞IO,所有操作(网络读写、命令执行)都在一个主线程中完成。
    此时Redis通过事件驱动处理多个客户端连接,避免线程切换和锁竞争,适合内存操作的高速场景。
    随着网络带宽和多核CPU的提升,单线程在高并发网络IO场景下成为性能瓶颈。
    毕竟,这个设计是2009年的了。🙂

  • 多线程时代-2020年
    在多线程时代(Redis6),Redis将网络IO处理(读写socket、协议解析)从主线程中剥离,交给多个IO线程并行处理,而命令执行还还是由单线程处理。
    多线程的改动,让Redis可以充分利用多核CPU提升网络IO吞吐量,解决单线程网络处理跟不上硬件速度的问题。
    此时Redis在多核环境下,吞吐量可提升一倍左右。

不过有文章介绍多数场景中Redis CPU没有打满,即不会遇到Redis单线程性能瓶颈问题。
Redis 多线程IO 主要解决是 IO 密集型场景,即网络 IO 消耗在 Redis 中占比较大的场景,而非计算密集型场景,因为命令处理仍然是单线程的。并且 Redis 提供了集群模式,可以通过增加从库和分片的方式来扩展系统吞吐能力。

  • Redis8异步IO-2024年
    很详细的介绍文章➡️Redis Async IO Thread:突破百万级 QPS 的性能极限,上面关于单线程和多线程的比较也是这篇文章提及的。

在异步IO设计中,Redis还是没有改变多线程IO设计的“命令必须在主线程中执行”的原则。
每个 IO 线程都有独立的事件循环,IO 线程也采用多路复用的方式来处理客户端的读写操作,从而消除了忙等待所带来的 CPU 开销。
而主也线程不再需要执行繁重的 epoll_wait 操作来处理客户端读写操作,只需要专注于命令处理。
如下图所示,主线程和 IO 线程交互过程可以简要描述如下:

  • 主线程在 accept 新连接后将客户端分配给 IO 线程
  • IO 线程在完成客户端的请求读取和命令解析后会通知主线程
  • 主线程处理来自 IO 线程的命令并生成回复并再转回给相应的 IO 线程
  • IO 线程负责将回复写回客户端,并继续处理客户端的读写事件
    ![[Pasted image 20250403162537.png]]

以Redis线程发展为例,可以看出Redis始终围绕着“高性能”这个核心目标演进。

感觉Redis设计真的很了不起,线程实现从单线程到多线程到异步,其所有命令还是都在主线程中执行。
着其实乍一看好像并不是什么高性能的设计,但单线程在内存环境中,可以最大化地利用L1/L2缓存。Redis的核心操作(如键值读写)是内存操作,速度极快(纳秒到微秒级),单线程足以处理高吞吐量,瓶颈更多出现在网络IO而非命令执行。前面提到Redis6多线程也是为了解决网络IO瓶颈而设计。

多线程则需要解决缓存一致性问题,其较单线程更复杂(如锁、死锁、线程同步)。
但是Redis通过这样的设计保证了操作的原子性与一致性(在微服务架构的事务处理一篇中,我们有了解到多服务访问多数据源一致性的难做)。
这样的设计也更适应Redis常用的缓存、计数器、分布式锁等一致性要求高的场景。

单线程执行命令还保持了Redis代码的简洁性、可维护性。
Redis之父Salvatore Sanfilippo他在博客中多次强调,Redis的成功部分归功于其简单性,多线程命令执行会让系统变得像传统RDBMS,失去轻量级优势。

Redis终归是:

简单高效的内存数据库。

即,在简单的同时追求一致性与高性能。

Redis学习

尽管 Redis 8 有诸多改动且即将推出,但我们仍能从先前的 Redis 设计中获取解决问题的思路。

例如,从上一章节提及的 Redis 线程设计的演进历程可知,多线程适合处理网络 IO 密集型场景,异步 IO 同样如此。
而单线程处理一致性更为简单、合适。这提醒我们要避免过度复杂,切勿滥用线程。在线程使用前,先查看 CPU 状况,确认瓶颈是否真的在线程上,是否是网络与磁盘IO等。
我们也很容易了解到Redis有着高效的数据结构,那么遇到性能问题时,是否可以借鉴Redis的数据结构来避免其他复杂机制。
等等……

本系列将跟随《Redis设计与实现》,系统学习了解Redis的原理与实践。
了解其内存存储与高效的数据结构、单线程事件循环模型、持久化机制、高可用性与分布式扩展、内存管理与淘汰机制、客户端协议与命令优化等核心内容。
了解Redis是怎么设计高性能、灵活性、可靠性、扩展性、简单性的。
以及思考为什么Redis8使用了另外的设计来实现目标。

虽然这本书使用的Redis(基于Redis2.9)版本有点老,Redis最新稳定版已达到7.x系列,但是Redis的核心设计理念8.0版本前变化不大。
另外推荐作者黄健宏的新书——《Redis应用实例》,书中介绍了Redis各种应用。

http://www.dtcms.com/wzjs/438873.html

相关文章:

  • 百度怎么对网站处罚太原seo代理商
  • 东营市做网站优化搜狗网址导航
  • 如何在自己的电脑上做网站网站设计培训
  • 深圳网站建设制作哪家便宜石家庄百度关键词优化
  • 做门窗做什么网站好百度关键词热搜
  • 萧山好的做网站的公司怎么快速优化网站
  • 光辉网络 石家庄网站建设代写文章质量高的平台
  • 做网页收集素材常用的网站有哪些营销方案的几个要素
  • 了解网站建设资阳地seo
  • 卡片式网站模板淘宝店铺运营推广
  • 上海网站备案在哪里查询个人怎么在百度上打广告
  • 那个网站是做副食批发百度推广优化公司
  • 如何做能切换语言的网站怎么优化网站关键词排名
  • 商城建设网站的原因小学生班级优化大师
  • 菠菜网站如何做推广互动营销的案例及分析
  • 绿植网站怎么做最新国际军事动态
  • 网站建设寻找可以途径2022年新闻摘抄简短
  • php网站本地搭建有哪些网络营销公司
  • 政府网站 中企动力seo推广排名
  • 二手车交易网站怎么做百度信息流广告怎么投放
  • 重庆峰宇园林建设有限公司网站网站优化排名哪家性价比高
  • 纹身网站建设案例广告宣传
  • 鼓楼区建设局网站企业网站建设报价表
  • 网站开发实训目的市场监督管理局投诉电话
  • wordpress 回复 验证码百度怎么优化网站排名
  • 能免费做片头的网站新型实体企业100强
  • 济南建设网站制作seo排名怎么看
  • 网站交易西安网络推广外包公司
  • 沧州做网站费用seo基础入门视频教程
  • 免费网站定制太原seo管理