Redis 为什么这么快?

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis 为什么这么快?

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 中,后续使用。

640.png

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
JSON NoSQL Redis
|
存储 NoSQL Redis
|
6月前
|
存储 NoSQL Go
Redis 双端链表
Redis 双端链表
45 0
|
6月前
|
存储 SQL NoSQL
[Redis]——初识Redis
[Redis]——初识Redis
|
12月前
|
存储 JSON NoSQL
redis中的value
需要注意的是,redis中的value是以二进制形式存储的,因此在存储和读取数据时需要进行序列化和反序列化操作。常用的序列化方式包括JSON、Protobuf、Msgpack等。示例代码如下
68 0
|
NoSQL API Redis
Redis
Redis 是一个开源的、支持网络、可基于内存亦可持久化的日志型、key-value 数据库,它支持多种数据类型,如字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(sorted set)等。Redis 提供了多种语言的 API,通常被称为数据结构服务器。
145 1
|
监控 NoSQL Java
|
存储 缓存 NoSQL
|
NoSQL 安全 Redis
Redis7
Redis7
|
存储 消息中间件 NoSQL
Redis基本
Redis基本
87 0