前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis6.0使用了多线程还能保证线程安全么?-Redis6.0 多线程精讲

Redis6.0使用了多线程还能保证线程安全么?-Redis6.0 多线程精讲

作者头像
AI码师
发布2022-12-22 10:17:35
5680
发布2022-12-22 10:17:35
举报

B站(乐哥聊编程)有完整配套视频,免费观看

为什么引入多线程?

有很多同学就有疑问了,既然官方都表示CPU不是Redis的性能瓶颈,那么为什么还要引入多线程呢?虽然单线程有很多优点,但对应的也必然会有一些缺点存在:

  • 只能使用CPU的单核
  • 如果删除的key过大(set 里面有一堆key),会导致服务端阻塞(后面通过LazyFree机制)
  • QPS难以提高

但是redis并没有直接上多线程IO去处理这些,而是在多线程之前引入了LazyFree机制

引入多线程的优点

  • 充分利用CPU资源
  • 多线程任务有利于分担Redis同步IO读写的负荷

LazyFree

lazyFree 主要包括有:flushDb操作,flushall,berewriteaof,删除大key等操作,采用多线程去单独做这些事情,主线程只负责关系的解除,子线程在后台默默的异步执行这些耗时的操作。

多线程模型

  • 主线程接收到客户端的连接请求,获取socket放入等待队列
  • 主线程判断等待队列已满,则通过轮询的方式,将这些连接分配给线程组
  • 主线程等待IO线程执行读取socket完毕
  • IO线程读取socket完毕之后,主线程开始执行redis命令
  • 将执行结果写入缓冲区
  • 阻塞等待IO线程将数据写入socket
  • 等待IO线程写入完毕,主线程清空队列,解绑关系,等待后续的连接请求

redis多线程安全么?

安全的 一句话总结:多线程只用在了IO读写上面,redis命令执行还是单线程执行。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐哥聊编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引入多线程的优点
  • LazyFree
  • 多线程模型
  • redis多线程安全么?
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档