Redis为什么这么快-创新互联

Redis(Remote Dictionary Server),即远程字典服务,是一个使用 C 语言编写,开源的(BSD许可)高性能的(key-value)非关系型的键值对数据库,是当前最热门的(NoSQL)数据库之一,也称为数据结构服务器。

公司主营业务:网站制作、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出于都免费做网站回馈大家。

官方数据显示,Redis 读的速度是110000次/s,写的速度是81000次/s

那么,为什么 Redis 存储会这么快呢?

我们从以下几点进行分析:

  • 完全基于内存

  绝大部分请求是纯粹的内存操作,非常快速,数据存在内存中,类似于HashMap,HashMap的优势就在于查找的操作时间复杂度为O(1)

  • 数据结构简单

  Redis使用的是专门设计过的数据结构

  Redis 有五种数据结构:String、list、set、hash、zset

  1. String:简单动态字符串,是可以修改的字符串,内部结构类似 Java 的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。
  2. list:快速链表(quickList),支持双向操作,纯粹理解的话,可以简单的理解为双向链表结构(实际结构还需要自己深究)
  3. set:hash 表,和 Java 中的 hashset 类似,底层使用的是 hashmap,不过所有的 value 都指向同一个内部值
  4. hash:键值对(hash表),底层使用的是 ziplist 或者 hashtable 实现的,另外 hash结构底层的 hashmap 扩容和 java 中hashmap扩容机制不同,redis 中采用的渐进式 rehash 方式
  5. zset:hash + 跳跃表,其中 hash 的作用是关联 value 和 score,跳表的目的是给元素value进行排序,根据 score 的范围获取元素列表
  • 单线程

  Redis 处理命令时,采用的是单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程和多线程导致的切换,减少了CPU的损耗,同时,不用去考虑各种锁的问题,不存在加锁和释放锁的操作,没有因为可能出现死锁而导致的性能消耗

  • 多路复用I/O

  是非阻塞IO,写入时仍可以读,不过读取的是写入前的数据

  • 底层模型不同

  底层实现方式和客户端之间通信的应用协议不一样,Redis 直接构建了自己的 VM 机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求

以上就是个人理解的 Redis 存储快的原因了

我是【辛勤de小蜜蜂】关注我,我们下期见


  • 由于博主才疏学浅,难免会有纰漏,假如您发现了错误或遗漏的地方,还望留言斧正,我会尽快对其加以修正。

  • 如果您觉得文章还不错,您的转发、分享、点赞、留言就是对我大的鼓励。

  • 感谢您的阅读,十分欢迎并感谢您的关注。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享文章:Redis为什么这么快-创新互联
文章网址:http://ybzwz.com/article/diipjd.html