一.Redis概述
本文最后更新于:2022年1月13日 下午
一.Redis概述
1. 数据库发展演变
单机Mysql的年代:
起初网站访问量并不是很大,单个数据库就可以满足需求,且当时更多的使用静态网页Html,服务器并没有很大的压力,但是可能存在很多瓶颈:
- 数据量如果太大,一个机器放不下
- 数据的索引(B+ Tree),一个机器的内存也放不下
- 访问量(读写混合),一个服务器承受不了
出现以上问题的话,单机模式无法解决。
Memcached(缓存)+Mysql+垂直拆分(读写分离)
我们采用读写分离,由一个库来进行写数据,其他数据库同步写库的数据,提供读数据服务。
当网站大部分时候都是在读时,每次都要查询数据库的话就很麻烦,因此希望减轻数据库的读压力,我们可以使用缓存(Cache)来缓解读压力。
发展过程:优化数据结构和索引—>文件缓存(但文件读写(IO)压力增大,也会降低效率)—>Memchched(当时的热门技术)。
分库分表 + 分库分表 + Mysql集群
尽管实现了分库分表,但是由于数据类型,数据量的增加(地图定位,音乐,热榜等数据)
Mysql等关系型数据库就不够用了,数据量很多,变化很大,例如给一个10万行的数据增加一个列属性,将需要修改所有10万条数据。
如果使用Mysql来存储比较大的文件,博客,图片等,数据库的表将会变得很大,效率也会降低,如果有一种数据库专门来处理这种数据,Mysql的压力就会变得十分小。
当前时代的互联网项目
2. 什么是NoSQL?
2.1 NoSQL定义
NoSQL = Not Only SQL(不仅仅是SQL)
泛指非关系型数据库,随着Web2.0互联网的诞生,传统的关系型数据库很难应对Web2.0时代。尤其是超大规模的高并发社区,暴露出 很多难以克服的问题。NoSQL在当今大数据环境下发展十分迅速,Redis是发展最快的,也是我们当下必须要掌握的技术。
很多数据类型用户的个人信息,社交网络,地理位置,这些数据类型的存储不需要一个特定的格式,不需要多少的操作就可以横向扩展 的。例如可以使用Map<String,Object>键值对来存储。而关系型数据库中的数据一般以表格的形式存在,具有固定的行和列。
2.2 NoSQL特点
解耦!
方便扩展(数据之间没有关系,很好扩展)
大数据量的高性能(Redis一秒写8万次,读取11万次,NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高)
数据类型是多样性的(不需要实现设计数据库,随取随用,如果数据量很大,设计表结构是很难的)
传统RDBMS与NoSQL的对比
1
2
3
4
5
6
7
8传统的RDBMS:
- 结构化组织
- SQL
- 数据与关系都存储在单独的表中
- 具有操作语言,数据定义语言
- 严格的一致性
- 基础的事务
- ......1
2
3
4
5
6
7
8NoSQL:
- 不仅仅是数据
- 没有固定的查询语言,可以定义语法
- 键值对存储,列存储,文档存储,图形数据库(社交关系存储)
- 最终一致性
- CAP定理和BASE(异地多活)
- 高性能,高可用,高可扩展
- .....3v:海量,多样,实时(大数据时代面临的问题)
3高:高并发,高可扩,高xingneng
3. NoSQL四大分类
KV键值对:Redis,Tair,Memcached….
文档型数据库(bson格式,与json相同):
- MongoDB:
- 一个基于分布式文件存储的数据库,c++编写,主要用于处理大量的文档。
- 一个介于关系型数据库和非关系型数据库中间的产品,是非关系行数据库中功能最丰富,最像关系型数据库的。
- ConthDB
- MongoDB:
列存储数据库:HBase,分布式文件系统
图关系数据库(使用图结构存储关系)
四种类型对比:
4. Redis简介
本文作者: ziyikee
本文链接: https://ziyikee.fun/2021/11/09/Redis%E6%A6%82%E8%BF%B0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!