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

Redis 为什么这么快?

作者头像
王小明_HIT
发布2020-09-22 10:26:42
6460
发布2020-09-22 10:26:42
举报
文章被收录于专栏:程序员奇点程序员奇点

Redis 为什么这么快?

Redis 是 NoSQL 数据库,key-Value 数据库,键值数据库会使用 hash 表存储值和数据。Redis 全称是 Remote Dictionary Server ,是用字典存储数据,也就是 key-value 类型的数据。

Redis 查询效率很高,为什么这么快?

  1. Redis 采用的是 ANSI C 语言编写,采用 C 语言编写的好处是底层代码执行效率高。依赖性低,使用 C 语言开发的库没有太多运行时(Runtime)依赖,并且系统兼容性好,稳定性高。
  2. Redis 采用的 Key-Value 方式进行存储,数据的操作复杂度为 O(1)
  3. 采用单线程模型,单线程避免了线程上下文切换和不必要的线程资源竞争。
  4. 采用了多路 I/O 复用技术,这里的多路是多个 Socket 网络连接,复用是指复用一个线程,采用多路技术的好处是同一个线程中可以处理多个 I/O 请求,减少网络 IO 消耗,提升了使用效率。

为什么采用连接池机制?

直接连接的问题是每次都要创建一个连接,这开销非常大,使用连接池机制,事先创建好多个连接,将其放到连接池中,当需要Redis 操作的时候,直接从连接池中获取,完成后不是释放掉连接,而是返回到连接池。

连接池原理

连接池实例一般保存两个list,保存的是 _avilable_connections 和 _in_user_connections, 分别代表连接池中可以使用集合和正在使用的连接池集合。

当想要创建连接时,从 _availavle_connections 中获取一个连接并使用,并将其_in_use_connections 中,如果没有可用的连接,才会创建一个新连接,再将其放到 _in_use_connections 中,如果连接使用完毕从 _in_use_connection中删除,然后添加到 _avilavle_connections 中,后续使用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员奇点 微信公众号,前往查看

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

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

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