SQL必知必会
陈旸
清华大学计算机博士
立即订阅
10179 人已学习
课程目录
已完结 49 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词丨SQL可能是你掌握的最有用的技能
免费
第一章:SQL语法基础篇 (19讲)
01丨了解SQL:一门半衰期很长的语言
02丨DBMS的前世今生
03丨学会用数据库的方式思考SQL是如何执行的
04丨使用DDL创建数据库&数据表时需要注意什么?
05丨检索数据:你还在SELECT * 么?
06丨数据过滤:SQL数据过滤都有哪些方法?
07丨什么是SQL函数?为什么使用SQL函数可能会带来问题?
08丨什么是SQL的聚集函数,如何利用它们汇总表的数据?
09丨子查询:子查询的种类都有哪些,如何提高子查询的性能?
10丨常用的SQL标准有哪些,在SQL92中是如何使用连接的?
11丨SQL99是如何使用连接的,与SQL92的区别是什么?
12丨视图在SQL中的作用是什么,它是怎样工作的?
13丨什么是存储过程,在实际项目中用得多么?
14丨什么是事务处理,如何使用COMMIT和ROLLBACK进行操作?
15丨初识事务隔离:隔离的级别有哪些,它们都解决了哪些异常问题?
16丨游标:当我们需要逐条处理数据时,该怎么做?
17丨如何使用Python操作MySQL?
18丨SQLAlchemy:如何使用Python ORM框架来操作MySQL?
19丨基础篇总结:如何理解查询优化、通配符以及存储过程?
第二章:SQL性能优化篇 (18讲)
20丨当我们思考数据库调优的时候,都有哪些维度可以选择?
21丨范式设计:数据表的范式有哪些,3NF指的是什么?
22丨反范式设计:3NF有什么不足,为什么有时候需要反范式设计?
23丨索引的概览:用还是不用索引,这是一个问题
24丨索引的原理:我们为什么用B+树来做索引?
25丨Hash索引的底层原理是什么?
26丨索引的使用原则:如何通过索引让SQL查询效率最大化?
27丨从数据页的角度理解B+树查询
28丨从磁盘I/O的角度理解SQL查询的成本
29丨为什么没有理想的索引?
30丨锁:悲观锁和乐观锁是什么?
31丨为什么大部分RDBMS都会支持MVCC?
32丨查询优化器是如何工作的?
33丨如何使用性能分析工具定位SQL执行慢的原因?
34丨答疑篇:关于索引以及缓冲池的一些解惑
35丨数据库主从同步的作用是什么,如何解决数据不一致问题?
36丨数据库没有备份,没有使用Binlog的情况下,如何恢复数据?
37丨SQL注入:你的SQL是如何被注入的?
第三章:认识DBMS (7讲)
38丨如何在Excel中使用SQL语言?
39丨WebSQL:如何在H5中存储一个本地数据库?
40丨SQLite:为什么微信用SQLite存储聊天记录?
41丨初识Redis:Redis为什么会这么快?
42丨如何使用Redis来实现多用户抢票问题
43丨如何使用Redis搭建玩家排行榜?
44丨DBMS篇总结和答疑:用SQLite做词云
第四章:SQL项目实战 (3讲)
45丨数据清洗:如何使用SQL对数据进行清洗?
46丨数据集成:如何对各种数据库进行集成和转换?
47丨如何利用SQL对零售数据进行分析?
结束语 (1讲)
结束语 | 互联网的下半场是数据驱动的时代
SQL必知必会
登录|注册

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

陈旸 2019-09-06
之前我们讲解了一些 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/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《SQL必知必会》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(9)

  • 墨禾
    为什么要设计成单线程?
    1.单线程减少了cpu资源的争用,避免了上下文的切换。
    2.基于内存读写,单线程读写耗时更少。

    为啥redis单线程模型也能效率这么高?

    1)纯内存操作
    2)核心是基于非阻塞的IO多路复用机制
    3)单线程反而避免了多线程的频繁上下文切换问题

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

    2019-09-11
    1
    6
  • 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
    4
  • 暮雨
    redis的单线程怎么理解?查看redis服务不至一个线程
    2019-11-05
  • Coool
    为什么使用单线程?
    1、代码更清晰,处理逻辑更简单
    2、不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗
    3、不存在多进程或者多线程导致的切换而消耗CPU
    2019-10-28
  • 旅行箱和梦想
    老师,后面还有mongo的课程吗?

    作者回复: 写了Redis,还没整理MongoDB,只简单梳理了下Redis和MongoDB在使用上的区别

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

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

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

    作者回复: 加油!

    2019-09-06
  • 学习
    文中多次提到key-filed-value,是field还是filed啊!!!!

    Redis采用单进程单线程模型,这样做的好处就是避免了上下文切换和不必要的线程之间引起的资源竞争。这样就会很快。

    Redis采用多路I/O复用技术,这样就会解决单线程慢效率弊端,其中有个集群模式,能支持多客户端使用

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

    2019-09-06
  • 有所思
    老师,为什么你讲的Redis底层数据结构和王争讲的数据结构与算法课里面的有些不一样,他说的里面redis会根据数据大小和数量选择不同的数据结构,而且有序集合用的是跳表实现,有点蒙
    2019-09-06
    3
收起评论
9
返回
顶部