专栏首页令仔很忙令仔学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是面向快速执行场景的数据库。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis单线程架构

    redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务。 引出单线程模型 开启三个redis-cli客户端同时执行命令 客户端1设置一个字...

    行 者
  • 【Redis破障之路】三:Redis单线程架构

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

    三分恶
  • 令仔学多线程系列(二)----自定义Queue队列

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

    令仔很忙
  • redis在微服务领域的贡献

    说到redis,可能大家的脑海中蹦出的关键词是:NoSQL、KV、高性能、缓存等。但今天的文章从另一个角度——微服务来展开。

    龟仙老人
  • redis在微服务领域的贡献

    说到redis,可能大家的脑海中蹦出的关键词是:NoSQL、KV、高性能、缓存等。但今天的文章从另一个角度——微服务来展开。

    用户9029030
  • Redis限流正确姿势指导指南,结尾附带Bug小惊喜,不要错过哦~

    限流算法经典的一般有四种:计数器(固定窗口)算法、滑动窗口算法、漏桶算法、令牌桶算法。

    林老师带你学编程
  • Redis底层数据结构

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

    吉林乌拉
  • 知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路

    知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经形成了一整套完整自动化运维服务体系,提供很多强大的功能。本文作...

    JackJiang
  • redis分布式锁如果没用好,坑真多

    在分布式系统中,由于redis分布式锁相对于更简单和高效,成为了分布式锁的首先,被用到了很多业务场景当中。

    苏三说技术
  • Redis 经典案例分析:消失的连接

    在Redis 经典案例分析这一专题中,我将与大家一起学习关于 Redis 维护的相关内容,把真是业务环境中遇到的维护问题与大家分享,共同积累 Redis 维护的...

    迪B哥
  • PHP程序员应该掌握哪些技术?

    1.Linux 能够流畅的使用Shell脚本来完成很多自动化的工作;awk/sed/perl 也操作的不错,能够完成很多文本处理和数据统计等工作;基本能够安装...

    猿哥
  • 基于 Redis 的分布式锁

    分布式锁在分布式应用中应用广泛,想要搞懂一个新事物首先得了解它的由来,这样才能更加的理解甚至可以举一反三。

    Java知音
  • Java程序员的实时分析系统基本架构需要注意的有哪些?

    这里通过一个简单的电商网站订单实时分析系统和大家一起梳理一下大数据环境下的实时分析系统的架构模型。当然这个架构模型只是实时分析技术的一 个简单的入门级架构,实际...

    Java码农那些事
  • 实战 Spring Cloud Gateway 之限流篇

    话说在 Spring Cloud Gateway 问世之前,Spring Cloud 的微服务世界里,网关一定非 Netflix Zuul 莫属。但是由于 Zu...

    架构师修炼
  • Redis探险 -《Redis开发与运维》笔记,精华分享。

    全面讲解Redis基本功能及其应用,并结合线上开发与运维监控中的实际使用案例,深入分析并总结了实际开发运维中遇到的“陷阱”,以及背后的原因, 包含大规模集群开发...

    王炸
  • Redis高可用集群搭建,配置,运维与应用!

    现如今 Redis 变得越来越流行,几乎在很多项目中都要被用到,不知道你在使用 Redis 时,有没有思考过,Redis 到底是如何稳定、高性能地提供服务的?

    Java程序猿
  • 我们所了解的Redis分布式锁真的就万无一失吗?

    在单体架构中,我们处理并发的手段有多种,例如synchronized或使用ReentrantLock等常用手段,但是在分布式架构中,上述所说的就不能解决某些业务...

    黎明大大
  • 初识redis

    我们在做数据架构时,除了需要详细了解各类数据库的特性和架构优劣势,还需要站在更高一层的角度去思考如何更好地支持各种各样的业务需求。

    bisal
  • 大数据技术学习路线

    加米谷大数据

扫码关注云+社区

领取腾讯云代金券