SQL 必知必会
陈旸
清华大学计算机博士
73338 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
第一章:SQL语法基础篇 (19讲)
SQL 必知必会
15
15
1.0x
00:00/00:00
登录|注册

41丨初识Redis:Redis为什么会这么快?

为什么Redis采用单线程工作模式
Redis的I/O性能、持久化模式
Redis与RDBMS的优势互补
实验:使用Python统计Redis进行1万次写请求和1万次读请求的时间
连接池机制
Python连接Redis
数据流
地理空间
基数统计
位图
有序集合
集合
列表
哈希
字符串
多路I/O复用技术
单进程单线程模型
数据结构简单,操作复杂度为O(1)
基于内存的数据库,避免磁盘I/O
采用ANSI C语言编写
查询效率非常高
采用哈希表存储键值和数据
Redis全称是REmote DIctionary Server
总结
如何使用Redis
Redis的数据类型
Redis为什么这么快
Redis是什么
初识Redis:Redis为什么会这么快?

该思维导图由 AI 生成,仅供参考

之前我们讲解了一些 RDBMS 的使用,比如 MySQL、Oracle、SQL Server 和 SQLite 等,实际上在日常工作中,我们还会接触到一些 NoSQL 类型的数据库。如果对比 RDBMS 和 NoSQL 数据库,你会发现 RDBMS 建立在关系模型基础上,强调数据的一致性和各种约束条件,而 NoSQL 的规则是“只提供你想要的”,数据模型灵活,查询效率高,成本低。但同时,相比 RDBMS,NoSQL 数据库没有统一的架构和标准语言,每种数据库之间差异较大,各有所长。
今天我们要讲解的 Redis 属于键值(key-value)数据库,键值数据库会使用哈希表存储键值和数据,其中 key 作为唯一的标识,而且 key 和 value 可以是任何的内容,不论是简单的对象还是复杂的对象都可以存储。键值数据库的查询性能高,易于扩展。
今天我们就来了解下 Redis,具体的内容包括以下几个方面:
Redis 是什么,为什么使用 Redis 会非常快?
Redis 支持的数据类型都有哪些?
如何通过 Python 和 Redis 进行交互?

Redis 是什么,为什么这么快

Redis 全称是 REmote DIctionary Server,从名字中你也能看出来它用字典结构存储数据,也就是 key-value 类型的数据。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Redis是一种高效的键值(key-value)数据库,以其出色的查询性能和快速响应著称。采用ANSI C语言编写的Redis具有高效的底层代码执行效率,基于内存存储避免了磁盘I/O,因此被称为缓存工具。其采用单进程单线程模型,避免了上下文切换和资源竞争,同时采用多路I/O复用技术,在同一个线程中处理多个I/O请求,尽量减少网络I/O的消耗,提升使用效率。Redis支持多种数据类型,包括字符串、哈希、列表、集合、有序集合等,并提供了丰富的操作方法。在Python中,可以通过直接连接或连接池方式操作Redis,其中连接池机制可以避免频繁创建和释放连接,提升整体性能。Redis的高效性能和丰富的数据类型使其成为一种值得学习和应用的数据库技术。 文章介绍了Redis的连接池机制原理,以及使用Python统计Redis进行1万次写请求和1万次读请求的时间。连接池通过维护可用连接和正在使用的连接集合,有效管理连接的创建和释放,提高了连接的复用性和整体性能。通过Python对Redis进行数据的写入和读取实验,结果显示1万次写请求用时约2秒,而1万次读请求用时不到1秒,展示了Redis的高效读写性能。总结指出了Redis作为常见的NoSQL数据库,支持丰富的数据类型和高效的I/O性能,与RDBMS优势互补,适合实际工作中的应用。同时,提出了思考问题,引发读者对Redis单线程工作模式和高效性能保证机制的思考。 总的来说,本文通过介绍Redis的特性和实验结果,展示了其在高效性能和数据处理方面的优势,适合读者快速了解Redis的概况和技术特点。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《SQL 必知必会》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(15)

  • 最新
  • 精选
  • 墨禾
    为什么要设计成单线程? 1.单线程减少了cpu资源的争用,避免了上下文的切换。 2.基于内存读写,单线程读写耗时更少。 为啥redis单线程模型也能效率这么高? 1)纯内存操作 2)核心是基于非阻塞的IO多路复用机制 3)单线程反而避免了多线程的频繁上下文切换问题

    作者回复: 解释的很好,大家都可以看下

    2019-09-11
    6
    45
  • jxs1211
    老师能否讲下mongodb,以及redis和mongodb的差别,实际使用时选择应该做哪些方面的考虑

    作者回复: Redis是Key-Value数据库,数据存放在内存中,查询和写入都是在内存中进行操作。当然Redis也支持持久化,只是持久化只是Redis的功能之一,并不是Redis的强项。通常,你可以把Redis称之为缓存。支持的数据类型丰富,包括字符串、哈希、列表、集合、有序集合,同时还支持基数统计,地理空间以及索引半径查询,数据流等。 MongoDB是面向文档数据库,功能强大,是非关系型数据库中最像关系型数据库的,处理增删改查也可以增加条件,类似于RDBMS一样灵活。 在存储方式上,Redis将数据放在内存中的,通过RDB或者AOF方式进行持久化。 而MongoDB实际上数据是存放在磁盘上的,只是通过mmap调用将数据映射到内存中,所以你可以将mmap理解成为加速的方式。mmap调用可以使得对普通文件的操作像是在内存中进行读写一样,这是因为它将文件映射到调用进程的地址空间中,实现了文件所在的磁盘物理地址与进程空间的虚拟地址一一映射的关系,这样就可以直接在内存中进行操作,然后写完成之后同步一下就可以存放到文件中,效率非常高。 不过在使用选择的时候,我们还是将 MongoDB 归为数据库,而Redis归为缓存。 总的来说,Redis就像是一架飞机一样,查询及写入性能极佳,但是存储的数据规模有限。 MongoDB就像是高铁一样,在处理货物(数据)的功能上强于Redis,同时能承载的数据量也很大,远高于Redis,但是查询及写入的效率不及Redis。

    2019-09-08
    2
    35
  • Coool
    为什么使用单线程? 1、代码更清晰,处理逻辑更简单 2、不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗 3、不存在多进程或者多线程导致的切换而消耗CPU

    作者回复: 对 总结的不错

    2019-10-28
    7
  • xcoder
    不好意思,我觉得这个课程对初学者,或者完全没接触过python和redis的同学来说不太友好吧。还得补充很多知识,安装python和redis,如何操作等等。。。这些都还需要网上找下教程,虽然最近都有在看起来,但觉得学起来还是有点力不从心,越到后面感觉评论的人也越来越少了,不知道后面的课时学的人也是不是越来越少了

    作者回复: Python在专栏里确实没有讲解,如果之前有编程语言基础,掌握起来不难。专栏里使用到的也是基础的语法。Redis如果之前没有接触过,到是不影响,因为这节主要是Redis初识,可以跟着做遍练习,对Redis多一些了解

    2019-09-20
    6
    3
  • 许童童
    跟着老师一起精进。加油。

    作者回复: 加油!

    2019-09-06
    1
  • 学习
    文中多次提到key-filed-value,是field还是filed啊!!!! Redis采用单进程单线程模型,这样做的好处就是避免了上下文切换和不必要的线程之间引起的资源竞争。这样就会很快。 Redis采用多路I/O复用技术,这样就会解决单线程慢效率弊端,其中有个集群模式,能支持多客户端使用

    作者回复: 是field,代表字段的含义

    2019-09-06
    1
  • 一路前行
    redis6.0,采用了多线程模式,老师怎么看???
    2020-06-03
    2
  • 骑行的掌柜J
    用Python连接Redis报错“ConnectionRefusedError: [WinError 10061]由于目标计算机积极拒绝,无法连接。”的解决办法 : https://blog.csdn.net/weixin_41013322/article/details/106387319 希望对各位有帮助
    2020-05-27
    2
  • 四喜
    我的速度是老师的1/10
    2020-03-02
    2
  • 有所思
    老师,为什么你讲的Redis底层数据结构和王争讲的数据结构与算法课里面的有些不一样,他说的里面redis会根据数据大小和数量选择不同的数据结构,而且有序集合用的是跳表实现,有点蒙
    2019-09-06
    8
    2
收起评论
显示
设置
留言
15
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部