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

织梦开发小说网站教程711相卡打印网址

织梦开发小说网站教程,711相卡打印网址,汽车网页设计欣赏,网站如何做才容易被搜索到这是我的第 192 期分享作者 | 王磊来源 | Java中文社群#xff08;ID#xff1a;javacn666#xff09;转载请联系授权#xff08;微信ID#xff1a;GG_Stone#xff09;我是 Redis#xff0c;今年 11 岁了~曾几何时我是辣么的单纯#xff0c;辣么的可爱#xff0c;而如… 这是我的第 192 期分享作者 | 王磊来源 | Java中文社群IDjavacn666转载请联系授权微信IDGG_Stone我是 Redis今年 11 岁了~曾几何时我是辣么的单纯辣么的可爱而如今我竟背叛了当初“誓言”决心在多线程这条路上义无反顾的一路狂奔没错我就是你们口中那个既可爱又迷人的 Redis你可以叫我小 R...R ????。一波骚操作结束我们开始今天的正文。我们知道在 Redis 4.0 之后就陆陆续续添加了一些多线程的功能难道单线程不香了吗单线程慢吗 Redis 的单线程曾几何时还是我们炫耀的资本优雅又不失高效的设计让无数的追求者为之着迷。你要问我排第几Nginx 是我大哥NodeJS 是我小弟我在家中排名老二。我们兄弟仨可谓单线程的杰出代表不仅演示了我们的优雅更加展现了我们的高效。????‍♂️有人可能会问为什么单线程的我竟然如此嚣张家中有矿呗Redis 单线程但性能依旧很快的主要原因有以下几点基于内存操作Redis 的所有数据都存在内存中因此所有的运算都是内存级别的所以他的性能比较高数据结构简单Redis 的数据结构比较简单是为 Redis 专门设计的而这些简单的数据结构的查找和操作的时间复杂度都是 O(1)因此性能比较高多路复用和非阻塞 I/ORedis 使用 I/O 多路复用功能来监听多个 socket 连接客户端这样就可以使用一个线程连接来处理多个请求减少线程切换带来的开销同时也避免了 I/O 阻塞操作从而大大提高了 Redis 的性能避免上下文切换因为是单线程模型因此就避免了不必要的上下文切换和多线程竞争这就省去了多线程切换带来的时间和性能上的消耗而且单线程不会导致死锁问题的发生。来看一下我的父亲大大是如何评价我的Redis 的 FAQFrequently Asked Questions常见问题回答了单线程的这个问题具体内容如下Redis is single threaded. How can I exploit multiple CPU / cores?Its not very frequent that CPU becomes your bottleneck with Redis, as usually Redis is either memory or network bound. For instance, using pipelining Redis running on an average Linux system can deliver even 1 million requests per second, so if your application mainly uses O(N) or O(log(N)) commands, it is hardly going to use too much CPU.However, to maximize CPU usage you can start multiple instances of Redis in the same box and treat them as different servers. At some point a single box may not be enough anyway, so if you want to use multiple CPUs you can start thinking of some way to shard earlier.You can find more information about using multiple Redis instances in the Partitioning page.However with Redis 4.0 we started to make Redis more threaded. For now this is limited to deleting objects in the background, and to blocking commands implemented via Redis modules. For future releases, the plan is to make Redis more and more threaded.详见https://redis.io/topics/faq他的大体意思是说 Redis 是基于内存操作的因此他的瓶颈可能是机器的内存或者网络带宽而并非 CPU既然 CPU 不是瓶颈那么自然就采用单线程的解决方案了况且使用多线程比较麻烦。但是在 Redis 4.0 中开始支持多线程了例如后台删除等功能。简单来说Redis  4.0 之前一直采用单线程的主要原因有以下三个使用单线程模型是 Redis 的开发和维护更简单因为单线程模型方便开发和调试即使使用单线程模型也并发的处理多客户端的请求主要使用的是多路复用和非阻塞 IO对于 Redis 系统来说主要的性能瓶颈是内存或者网络带宽而并非 CPU。为什么需要多线程 但是单线程也有单线程的苦恼比如当我Redis需要删除一个很大的数据时因为是单线程同步操作这就会导致 Redis 服务卡顿于是在 Redis 4.0 中就新增了多线程的模块当然此版本中的多线程主要是为了解决删除数据效率比较低的问题的他的相关指令有以下三个unlink keyflushdb asyncflushall async执行示例如下所示 unlink key # 后台删除某个 keyOK # 执行成功flushall async # 清空所有数据OK # 执行成功 这样我就可以把这些坏人“瞬间”拉黑删除了。所谓的“瞬间”删除其实有些夸张只是从返回的结果来看是删除成功了但是这只是把删除工作交给了后台的小弟子线程异步来删除数据了。小贴士正常情况下使用 del 指令可以很快的删除数据而当被删除的 key 是一个非常大的对象时例如时包含了成千上万个元素的 hash 集合时那么 del 指令就会造成 Redis 主线程卡顿因此使用惰性删除可以有效的避免 Redis 卡顿的问题。Redis 6 中的多线程 之前在 Redis 4.0 中你说删除比较慢骗我开大多线程来处理也就罢了为毛 Redis 6.0 还要多线程嘞其实是这样的在 Redis 4.0 版本中虽然引入了多线程但此版本中的多线程只能用于大数据量的异步删除然而对于非删除操作的意义并不是很大。但如果我们使用我们在非删除的环境下使用多线程的话就可以分摊 Redis 同步读写 I/O 的压力以及充分的利用多核 CPU 的资源了这样就可以有效的提升 Redis 的 QPSQuery Per Second每秒查询率了。在 Redis 中虽然使用了 I/O 多路复用并且是基于非阻塞 I/O 进行操作的但 I/O 的读和写本身是堵塞的比如当 socket 中有数据时Redis 会通过调用先将数据从内核态空间拷贝到用户态空间再交给 Redis 调用而这个拷贝的过程就是阻塞的当数据量越大时拷贝所需要的时间就越多而这些操作都是基于单线程完成的。I/O 多路复用简单来说就是通过监测文件的读写事件再通知线程执行相关操作保证 Redis 的非阻塞 I/O 能够顺利执行完成的机制。因此在 Redis 6.0 中新增了多线程的功能来提高 I/O 的读写性能他的主要实现思路是将主线程的 IO 读写任务拆分给一组独立的线程去执行这样就可以使多个 socket 的读写可以并行化了但 Redis 的命令依旧是由主线程串行执行的。需要注意的是 Redis 6.0 默认是禁用多线程的可以通过修改 Redis 的配置文件 redis.conf 中的 io-threads-do-reads 等于 true 来开启多线程完整配置为 io-threads-do-reads true除此之外我们还需要设置线程的数量才能正确的开启多线程的功能同样是修改 Redis 的配置例如设置 io-threads 4 表示开启 4 个线程。小贴士关于线程数的设置官方的建议是如果为 4 核的 CPU建议线程数设置为 2 或 3如果为 8 核 CPU 建议线程数设置为 6线程数一定要小于机器核数线程数并不是越大越好。关于 Redis 的性能我的父王  antirezRedis 作者在 RedisConf 2019 分享时曾提到Redis 6 引入的多线程 I/O 特性对性能提升至少是一倍以上。国内也有人在阿里云使用 4 个线程的 Redis 版本和单线程的 Redis 进行比较测试发现测试的结果和 antirez 给出的结论基本吻合性能基本可以提高一倍。总结 Redis 虽然依靠自己的基于内存操作、数据结构简单、多路复用和非阻塞 I/O、避免了不必要的线程上下文切换等特性在单线程的环境下依然很快但对于大数据的 key 删除还是卡的飞起因此在 Redis 4.0 引入了多线程unlink key/flushall async 等命令主要用于 Redis 数据的删除而在 Redis 6.0 中引入了 I/O 多线程的读写这样就可以更加高效的处理更多的任务了Redis 只是将 I/O 读写变成了多线程而命令的执行依旧是由主线程串行执行的因此在多线程下操作 Redis 不会出现线程安全的问题。Redis 无论是当初的单线程设计还是如今与当初设计相背的多线程目的只有一个让 Redis 变得越来越快。所以 Redis 依旧没变他还是那个曾经的追风少年~最后的话原创不易如果觉得本文对你有用请随手点击一个「赞」这是对作者最大的支持与鼓励谢谢你。ENDRedis 6.0 正式版终于发布了除了多线程还有什么新功能《大厂内部资料》Redis 性能优化的 13 条军规全网首发关注公众号发送”进群“老王拉你进读者群。
http://www.yutouwan.com/news/438198/

相关文章:

  • 西平县住房和城乡建设局网站湖南人文科技学院简介
  • 网站建设最常见的问题石家庄职业技术学院
  • 设计素材网站会员怎么买划算PS做网站报价
  • 万网是什么网站赣州工作室
  • 韩国网站never官网百度怎么投放广告
  • 搜索引擎优化网站的网址陕西省建设厅
  • 秦皇岛建设局网站6常宁做网站
  • 济南市住宅与房地产信息网搜索关键词排名优化技术
  • 建筑资格证书查询官网网站内容如何优化
  • php网站开发需要多久免费网址域名注册
  • 网页 网站 区别地址生成器
  • 搜索引擎友好的网站有哪些特点wordpress 按作者分类
  • 网站域名到期怎么续费专业公司网络推广
  • 做响应式网站怎么设计古镇做灯饰网站的公司
  • 沈阳市建设工程安全监督站网站石家庄软件定制开发
  • 自己建设个人网站要花费多少南通网站推广优化公司
  • 邢台建设局官方网站网站开发前台开发
  • 网站服务器技术wordpress模板定制
  • 黑龙江网站建设开发wordpress安装失败
  • 深圳建设网站企业南阳网站制作怎么样
  • 金融行业网站开发心理健康教育网站建设
  • 诸几建设银行网站中国外包加工网
  • 网页网站制作维护wordpress 投票插件
  • 广东seo网站设计多少钱连锁酒店的网站建设
  • 网站创建怎么做wordpress cos-html-cache
  • 聊城市公司网站建站义乌建设网站制作
  • 门户网站设计思路百度网站提交入口网址
  • 国别网站定位命令 co .uk sa文章网站模板哪个好
  • wex5可以做网站吗深深深视频在线观看
  • 房产网站排名wordpress授权小程序