redis缓存重要特性单线程模型

作者: Tim在路上 | 来源:发表于2019-05-11 12:43 被阅读0次

redis和memcache的区别

  1. redis拥有更多的数据结构支持更多的数据操作。redis操作是在服务端进行。
  2. memcache需要将数据拿到客户端操作,再传输回去,增加IO次数和数据体积。
  3. redis中对于复杂操作比较高效。
  4. redis支持cluster模式,memcached没有原生的集群模型,需要客户端往集群中分片写数据。

redis的单线程模式

首先为什么说采用单线程模型,有人说是由于多线程竞争所以单线程更快???

多线程绝大数肯定比单线程快,不采用多线程不是说单线程比较块,而是单线程实现起来简单。其次由于redis是基于内存的,cpu不是瓶颈,内存才是瓶颈,所以采用单线程就可以了,同时也简化了数据结构和算法实现。

简要说下redis单线程模型。

Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。

所有的客户端对服务端请求socket连接,服务端都会专门建立一个socket与其连接。

IO多路复用程序是单线程的轮训监控所有的socket,但是IO多路复用程序,只负责监控socket接受命令所行成的AE_READABLE,IO多路复用是基于非阻塞机制的,所以拿到的命令不直接执行。

将其加入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。执行的时候是基于内存的单线程执行。

但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。

redis.png

为什么redis单线程也可以做到每秒万级别处理能力

(1)纯内存访问。数据存放在内存中,内存的响应时间大约是100纳秒,这是Redis每秒万亿级别访问的重要基础。

(2)非阻塞I/O,Redis采用epoll做为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接,读写,关闭都转换为了时间,不在I/O上浪费过多的时间。

(3)单线程避免了线程切换和竞态产生的消耗。

相关文章

  • redis缓存重要特性单线程模型

    redis和memcache的区别 redis拥有更多的数据结构支持更多的数据操作。redis操作是在服务端进行。...

  • java面试宝典 redis和分布式锁

    redis 是基于key-value的内存高速缓存数据库 redis 是单线程模型 redis 是单线程模型为什么...

  • 2020-06-24

    redis IO模型 学习方法 应该从对比的角度去分析其特性; 本篇博客主要针对redis的单线程模型,epoll...

  • 要记得

    redis 1,redis是一个单线程的高性能缓存数据库,redis底层采用网络io的多路复用(事件驱动模型)来监...

  • Redis学习之旅~原理篇

    内容依旧来自 核心原理 线程IO模型 单线程非阻塞IO redis是单线程模型。redis的...

  • 第一章:Redis初识

    Redis特性 速度快 数据存储在(内存)中 (主要原因) C语言编写(50000行) 单线程模型...

  • Redis(一)特性

    redis的特性 1、内存,快2、单线程worker,io threads3、连接多,epoll4、kv模型,5种...

  • redis学习笔记(一)

    redis的特性 1.速度快: redis源码是使用C语言编写的,它将数据存在内存当中,线程模型是单线程 从上到下...

  • Redis 到底是单线程还是多线程?我要吊打面试官

    1、Redis 单线程到底指什么? 没错,大家所熟知的 Redis 确实是单线程模型,指的是执行 Redis 命令...

  • Redis高级应用总结

    Redis的线程模型 Redis是单进程单线程的,但是使用的是单线程非阻塞的多路IO复用的模型。多线程模型会导致线...

网友评论

    本文标题:redis缓存重要特性单线程模型

    本文链接:https://www.haomeiwen.com/subject/cglxaqtx.html