- 此笔记是根据尚硅谷Redis7课程学习所记,地址链接:https://www.bilibili.com/video/BV13R4y1v7sP/?p=31&spm_id_from=333.880.my_history.page.click&vd_source=f54423388c862919ad8a28c5897022b4
0、Redis概念介绍
0.1、是什么
Redis:REmote Dictionary Server(远程字典服务器)
0.2、能干什么
主流功能与应用
- 分布式缓存,挡在mysql数据库之前的带刀侍卫。
- 内存存储和持久化(RDB+AOF)
- redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务。
- 高可用架构搭配
- 单击
- 主从
- 哨兵
- 集群
- 缓存穿透、击穿、雪崩
- 分布式锁
- 队列
- Redis提供list和set操作,这使得Redis能作为一个很好的消息队列平台来使用。
- 我们常通过Redis的队列功能做购买限制。比如到节假日或者推广期间,进行一些活动,对用户购买行为进行限制,限制今天只能购买几次商品或者一段时间只能购买一次商品。也比较适合使用。
- 排行版+点赞
- 在互联网应用中,有各种各样的排行榜,比如电商网站的阅读销量排行榜、社交APP的礼物排行榜、小程序投票排行榜等等。Redis提供的zset数据类型能够快速实现这些复杂的排行榜。
- 比如小说网站对小说进行排名,根据排名,将排名靠前的小说推荐给用户。
- 。。。。。
总体功能概述
优势
- 性能极高-Redis能读的速度是110000次/秒,写的速度是81000次/秒。
- Redis数据类型丰富,不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- Redis支持数据的备份,即master-slave模式的数据备份。
总结
1、NoSQL数据库简介
1.1、技术发展
技术的分类:
- 解决功能性的问题:用来解决增删改查等基本功能。
- 解决拓展性的问题:实现了基本的功能,在项目发展过程中会发生增加功能或者修改功能的需求。如果使用基本的技术就会比较麻烦,而这时候如果使用框架,就可以使得项目可拓展性更高。
- 解决性能的问题:项目功能完成后,之后一个项目就会有很多用户进行使用,这时候就会产生性能问题。NoSQL就是用来解决性能问题的技术,而Redis就是一种典型的NoSQL数据库。
1.1.1、Web1.0时代
1.1.2、Web2.0时代
1.1.3、解决CPU及内存压力
- 使用负载均衡(Nginx)来实现分布式服务器,从而解决服务器压力。
- 使用NoSQL可以解决session存在哪等分布式问题。(它完全在内存中,速度很快,数据结构也比较简单)
1.1.4、解决IO压力
1.2、NoSQL数据库
1.2.1、NoSQL数据库概述
1.2.2、NoSQL的适用场景
- 对数据高并发的读写:比如电商中的秒杀功能,这就是一个高并发的场景。
- 海量数据的读写。
- 对数据高可拓展性的读写。
1.2.3、NoSQL不适用的场景
- 需要事务的支持。
- 基于sql的结构化查询存储,处理复杂的关系,需要即时查询。
- (用不着SQL和用了SQL也不行的情况,请考虑NoSQL)
1.2.4、Memcache
1.2.5、Redis
1.2.6、MongoDB
1.3、行式存储数据库(大数据时代)
1.3.1、行式数据库
1.3.2、列式数据库
1.4、图关系型数据库
2、Redis迭代演化和Redis7新特性浅谈
2.1、Redis版本迭代推演介绍
- 几个里程碑式的重要版本。
- 命名规则
2.2、Redis7部分新特性总览
- Redis Functions(了解)
- 想使用Redis Functions将Lua脚本替换掉。
- Clinent-eviction
- Multi-part AOF
- ACL v2
- 新增命令
- listpack替代ziplist
- 底层性能提升(和编码关系不大)
- 。。。。。
2.3、总体概述