redis 学习日志
redis 缓存
Nosql
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。
历史数据访问结构
APP->DAL->Mysql
由于数据量太大,并且需要建立索引,还要承担读写操作
衍生Memcaced(缓存层)+Mysql+读写分离
缓存:当读数据的时候会放到缓存区,之后有人访问会直接访问缓存减少了读的操作
读写分离:主机负责写操作,从机只负责读操作,降低io压力
分库分表+水平拆分+mysql集群
分库分表:数据量太大,读写的性能会下降,即使有索引,索引也会变得很大,性能同样会下降,缓解读写的压力
水平拆分:由于数据量大划分到不同的数据库,避免记录过多问题而导致查询时间长
垂直拆分:避免数据冗余,避免表过多或者字段过多臃肿问题,拆出不常用的列,降低复杂性
表锁:当写数据的时候会锁定整个表,这在高并发下会影响效率
行锁:当写数据的时候会锁定一行
当需求越来越大的时候,数据量大并且需要快速的读写,并且各种数据格式的出现
用户->防火墙->负载均衡主从机->多台服务器->数据库群集
缓存 移动信息服务器 hadoop集群 实时通信服务器 流媒体服务器 图片服务器 文件服务器 群发服务器
关系型数据库 RDBMS 例如mysql
非关系型数据库 Nosql 例如redis
传统的RDBMS
-结构化组织
-SQL
-数据和关系都存在单独的表中
-操作数据定义语言
-严格一致性
-基础的事务
-
Nosql
-没有固定查询语言
-多种数据格式
-键值对存储,列存储,文档存储,图形存储
-最终一致性,
-CAP定理和BASE(异地多活)
-高可用,高性能,可拓展
大数据5V:大量,多样,实时,价值(信息),质量(信息的准确)
NOSQL+RDBMS
关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,让NoSQL数据库对关系型数据库的不足进行弥补。
非关系型数据库的优势:
1)性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
2)可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
关系型数据库的优势:
1)复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
2)事务支持使得对于安全性能很高的数据访问要求得以实现。对于这两类数据库,对方的优势就是自己的弱势,反之亦然。
nosql可以备份关系型数据库数据
行式数据库 每一行都是多种属性,一行一行查出相关属性或者不必要属性,建立索引需要大量时间和资源
列式数据库 每一列都是同一属性,一列直接查询对应属性,不需要建立额外索引,但如果查询所有字段则要全部查询然后拼接起来
mysql 端口号默认为3306
redis 端口号默认为6379