前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis为什么会这么快?

Redis为什么会这么快?

作者头像
MickyInvQ
发布2020-09-27 10:21:48
7730
发布2020-09-27 10:21:48
举报
文章被收录于专栏:InvQ的专栏

Redis 属于键值(key-value)数据库,键值数据库会使用哈希表存储键值和数据,其中 key 作为唯一的标识,而且 key 和 value 可以是任何的内容,不论是简单的对象还是复杂的对象都可以存储。键值数据库的查询性能高,易于扩展。

Redis 全称是 REmote DIctionary Server,从名字中你也能看出来它用字典结构存储数据,也就是 key-value 类型的数据。

Redis 的查询效率非常高,根据官方提供的数据,Redis 每秒最多处理的请求可以达到 10 万次。

Redis为什么会这么快?

主要有以下4点原因:

  • Redis 采用 ANSI C 语言编写,它和 SQLite 一样。采用 C 语言进行编写的好处是底层代码执行效率高,依赖性低,因为使用 C 语言开发的库没有太多运行时(Runtime)依赖,而且系统的兼容性好,稳定性高。
  • 此外,Redis 是基于内存的数据库,我们之前讲到过,这样可以避免磁盘 I/O,因此 Redis 也被称为缓存工具。
  • 但 Redis 快的原因还不止这些,它采用单进程单线程模型,这样做的好处就是避免了上下文切换和不必要的线程之间引起的资源竞争。
  • 在技术上 Redis 还采用了多路 I/O 复用技术。这里的多路指的是多个 socket 网络连接,复用指的是复用同一个线程。采用多路 I/O 复用技术的好处是可以在同一个线程中处理多个 I/O 请求,尽量减少网络 I/O 的消耗,提升使用效率。
Redis的数据类型

Redis 支持的数据类型包括字符串、哈希、列表、集合、有序集合等。

  • 字符串类型是 Redis 提供的最基本的数据类型,对应的结构是 key-value。
  • 字符串列表(list)的底层是一个双向链表结构,所以我们可以向列表的两端添加元素,时间复杂度都为 O(1),同时我们也可以获取列表中的某个片段。
  • 字符串集合(set)是字符串类型的无序集合,与列表(list)的区别在于集合中的元素是无序的,同时元素不能重复。
  • 有序字符串集合(SortedSet,简称 ZSET)。实际上 ZSET 是在集合的基础上增加了一个分数属性,这个属性在添加修改元素的时候可以被指定。每次指定后,ZSET 都会按照分数来进行自动排序,也就是说我们在给集合 key 添加 member 的时候,可以指定 score。
  • 哈希(hash)提供了字段和字段值的映射,对应的结构是 key-field-value。如果想要给 user1 设置 username 为 zhangfei,age 为 28,可以写成:hset user1 username zhangfei hset user1 age 28
总计

NoSQL 数据库种类非常多,了解 Redis 是非常有必要的,在实际工作中,我们也经常将 RDBMS 和 Redis 一起使用,优势互补。 作为常见的 NoSQL 数据库,Redis 支持的数据类型比 Memcached 丰富得多,在 I/O 性能上,Redis 采用的是单线程 I/O 复用模型,而 Memcached 是多线程,可以利用多核优势。而且在持久化上,Redis 提供了两种持久化的模式,可以让数据永久保存,这是 Memcached 不具备的。

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Redis为什么会这么快?
  • Redis的数据类型
  • 总计
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档