学习
实践
活动
专区
工具
TVP
写文章
专栏首页令仔很忙令仔学Redis(二)----单线程架构

令仔学Redis(二)----单线程架构

Redis是一种基于键值对(key-value)的NoSQL数据库,包含多种数据结构。官网上给出的数字是读写性能可以达到10万/秒,可见速度之快。

做个简单的例子,同时开启5个redis客户端,同时执行下面的命令:

incr  number

每一条命令的执行过程都是一样的,发送命令,执行命令,返回结果。

如果是在多线程的情况下,不作任何处理很可能就会造成数据最终结果出现问题。但是Redis不会,Redis的是单线程的处理方式,新的命令并不会立即被执行,而是统一的放到了队列中,一条一条的执行.

这样的处理就不会出现并发的问题。那为什么单线程的情况下还能这么快?通常的来讲,单线程的处理能力要比多线程的处理方式要差,举个例子:10000斤的货物,每一辆车的运载能力是每次1000斤,那么如果只有一辆车的话需要10次才能完成,但是如果有10辆车呢,一次就能完成。 那为什么Redis使用单线程模型就会达到每秒万级别的处理能力?归结为以下三点:

1、纯内存访问,Redis把所有的数据都放到了内存中,内存的响应时间大约在100纳秒,这也是Redis能有百万级别处理能力的重要基础。 2、还有一点就是Redis采用了epoll作为I/O多路复用技术实现。同时Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为事件,不在网络I/O上消耗太多的时间。关于这一点会在后续的博客中深入的讲解 3、单线程减少了 线程切换和和竟态产生的消耗。

但是单线程还有一个问题:就是对于每个命令的执行时间是有要求的,如果其中的某一个命令执行过长,会造成其他命令的阻塞,这对于Redis这种高性能的服务来说是致命的,所以Redis是面向快速执行场景的数据库。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/zlts000复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 令仔学Redis(一)----浅析Redis存储数据时格式的设计

    之前接触的一个业务,数据量的话现在在数据库中存了有将近400W的数据,在搜索的时候得到的这些数据会放入达到异步队列中,然后单独开一个线程来进行双写,写缓存,然...

    令仔很忙
  • 令仔学多线程系列(二)----自定义Queue队列

    之前做了一个新的需求,需要从每一次search请求返回中获取相关的数据,然后把这些获取到的数据做异步处理,写入缓存并同步到数据库中。如何做异步在这就想到了用队...

    令仔很忙
  • 【Redis破障之路】一:强大的Redis

    和隔壁组的老哥聊天,老哥最近面了十几个候选人,他觉得合格的只有四五个。我问他主要问了什么?他重点提到了Redis。

    三分恶
  • Gavin老师:分布式缓存Redis高级应用实战(艾编程精品视频)

    【学完本节课你将掌握如下知识】 1、分布式缓存中间件选型 2、Redis作为单线程模式为什么效能还这么高? 3、Redis服务安装机常用命令解析 4、如...

    艾编程
  • 敖丙带你看Redis数据结构底层系列-SDS

    我:哦哦哦,还有HyperLogLog,bitMap,GeoHash,BloomFilter

    敖丙
  • 借助Redis做秒杀和限流的思考

    最近群里聊起秒杀和限流,我自己没有做过类似应用,但是工作中遇到过更大的数据和并发。 于是提出了一个简单的模型: var count = rds.inc(key)...

    大石头
  • 直播预告 | 听说来这又能学技术,还能领福利?

    在上次交流会的时候,嘉宾就为大家分享了Tendis的两种产品形态——存储版和混合存储版,分别对应了两种不同的需求,同时,嘉宾还为大家介绍了存储版的架构和特性,就...

    开发者社区直播小编
  • 大数据与云计算技术周报(第142期)

    “大数据” 三个字其实是个marketing语言,从技术角度看,包含范围很广,计算、存储、网络都涉及,知识点广、学习难度高。 本期会给大家奉献上精彩的:死锁...

    大数据和云计算技术
  • 直播预告 | 听说来这又能学技术,还能领福利?

    Tendis开发者线上交流会又来啦! 关于Tendis,还不了解的小伙伴可以戳→开源一周star上千,什么产品这么香? 在上次交流会的时候,嘉宾就为大家分享了...

    腾讯云数据库 TencentDB
  • 毕业5年,我问遍了身边的大佬,总结了他们的学习方法

    很多次小伙伴问到学习方法,我也很想写这样的一篇文章来跟大家讨论下关于学习方法这件事情。

    全栈程序员站长
  • 【Redis破障之路】三:Redis单线程架构

    众所周知,Redis是一个单线程架构的NoSQL数据库,但是是单线程模型的Redis为什么性能如此之高?这就是我们接下来要探究学习的内容。

    三分恶
  • Redis 6.0多线程探秘(上)

    我们在生产环境一般都会选择稳定版本来部署,在每个大版本之间还会有若干个小版本,目前最新的版本是6.2.2。

    PHP开发工程师
  • SpringBoot + Redis:模拟 30w 人的秒杀抢单!

    在电商业务中,秒杀属于技术挑战最大的业务,只有经验够丰富、底子够稳的程序员,才能够hold住从搭建、上线到调优全链路。 双十一就是一个经典的秒杀案例,动辄数十万...

    java思维导图
  • 环式学习法

    环式学习法更加适合业务系统相关的技术人员,而不太适合中间件(数据库、缓存、消息队列和服务中心等)相关的的技术人员,因为中间件的技术更加专注于深度和宽度,和具体的...

    王小明_HIT
  • 解放人与设备距离,5G时代的远程操控该如何完成

    物联网这个概念早在十多年前便已提出,其主要依托于移动通讯网络来实现其功能的传输。在过去物联网领域的一些设备控制场景中,我们或多或少都见到过远程控制技术的身影,但...

    毛峻岭
  • Redis底层数据结构

    在上一篇中我们已经介绍过了Redis有5种数据类型,但每一种数据类型底层的实现都是不同的,在学习Redis时,我们除了要掌握这5种数据类型外,还要了解它们具体的...

    吉林乌拉
  • 2天,我把 Redis 学废了!

    要说在近几年的面试里,考察难度只增不减的,Redis可谓是当仁不让! 而往前倒推几年,最人气的NoSQL数据库还是MongoDB,同一年发布的Redis甚至排不...

    孙玄@奈学教育
  • 缓存数据库选型 -- Redis vs Memcache

    memcache 和 redis 是目前使用频率最高的两个缓存服务器的选型,各公司也常常在面试中问到二者的区别。 虽然在实际的使用中,有着用 redis 取代 ...

    用户3147702
  • 阿里二面被问Redis主从复制和集群,14:03进去的,14:08就出来了…

    要说在近几年的面试里,考察难度只增不减的,Redis可谓是当仁不让! 而往前倒推几年,最人气的NoSQL数据库还是MongoDB,同一年发布的Redis甚至排不...

    java思维导图

扫码关注腾讯云开发者

领取腾讯云代金券