专栏首页令仔很忙令仔学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 条评论
登录 后参与评论

相关文章

  • 静态网页VS动态网页

    在做《牛腩新闻发布系统》的时候,建立的网页有.html的,还有.aspx,刚开始接触,还以为这些东西是一样的呢,当看ASP.NET视频的时候,听见里面讲课的老...

    令仔很忙
  • 新手学Linux(一)----安装JDK

    安装jdk,首先你要有安装包,去网上下载一个Linux版本的rpm包,在我的电脑上用的是jdk-8u65-linux-x64.rpm包。链接:

    令仔很忙
  • 用户登录失败,Microsoft sql server 错误:18456

        电脑上的安全软件,不小心拒绝了一个net1.exe的进程,结果在登录 SQL server 2008 的时候,就总是提示“用户登录失败,错误:18456...

    令仔很忙
  • Redis 学习笔记6 - 管理Redis

    除了通过 redis.conf 文件对 Redis 进行配置外,我们还可以通过 config set 命令来个别值进行设置

    zhangyunfeiVir
  • 重磅消息:Redis 6.0.0 稳定版发布

    1、重新设计了客户端缓存,特别是放弃了caching slot,而只使用key names。

    程序猿DD
  • redis研究

    jeremyxu
  • Redis 缓存性能实践及总结

    在互联网应用中,缓存成为高并发架构的关键组件。这篇博客主要介绍缓存使用的典型场景、实操案例分析、Redis使用规范及常规 Redis 监控。

    2020labs小助手
  • 分享30道Redis面试题,面试官能问到的我都找到了

    Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到...

    技术zhai
  • Redis 6.0 稳定版发布,正式支持多线程

    近期Redis 6.0.0稳定版发布了,是Redis有史以来最大的版本, Redis的作者在博客中介绍了该版本中的新特性,此外除了这些新特性外,Redis 6也...

    大数据技术架构
  • 几个Redis使用技巧

    实际上NewLife.Redis是一个完整的Redis协议功能的实现,但是Redis的核心功能并没有在这里面,而是在NewLife.Core里面。

    好好学java

扫码关注云+社区

领取腾讯云代金券