一、 NoSQL入门和概述
1、是什么
nosql:no only sql,非关系型数据库
2、能干嘛
- 易扩展
- 大数据量高性能
- 多样灵活的数据模型
- 键值对存取
3. 3V3高
4. 当下的NoSQL的应用
当下的应用是sql和nosql一起使用的
5.NoSQL数据模型简介
- 什么时BSON
BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象
- 聚合模型
1. KV键值对
2. Bson
3. 列族
4. 图形
6.NoSQL数据库的四大分类
1. KV键值对:典型介绍
新浪:BerkeleyDB + redis
美团:redis + tair
阿里、百度:memcache+redis
2. 文档型数据库(bson格式比较多):典型介绍
CouchDB
MongoDB:是一个基于分布式文件存储的数据库
。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决,是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。
3. 列存储数据库
Cassandra,HBase
分布式文件系统
4. 图关系数据库
它不是放图形的,放的是关系比如:朋友圈社交网络、广告推荐系统,社交网络,推荐系统等。专注于构建关系图谱,Neo4J,InfoGrid
7. 在分布式数据库中CAP原理CAP+BASE
1. 传统数据库的ACID是什么
- A:Atomicity 原子性
- C:Consistency 一致性
- I:Isolation 独立性
- D:Durability 持久性
ACID详情信息:https://blog.csdn.net/qq_42826747/article/details/106360824
2. CAP
- C:Consistency 强一致性
- A:Availability 可用性
- P:Partition tolerance 分区容错性
3. CAP的3进2
- CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性、可用性和分区容错性这三个需求
- 因此 根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三大类
- CA —— 单点集群,满足一致性,可用性的系统,通常在可扩展上不太强大(传统Oracle数据库)
- CP —— 满足一致性,分区容忍性的系统,通常性能不是特别高(Redis、Mongodb)
- AP —— 满足可用性、分区容错性的系统,通常可能对一致性要求低一些(大多数网站架构的选择)
4. 经典CAP图
5. BASE
- BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
- BASE其实是下面三个术语的缩写
- 基本可用 Basically Available
- 软状态 Soft state
最终一致 Eventually consistent
- 它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上的改观。为什么这么说呢,缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们不需采用另一种方式来完成,这里BASE就是解决这个问题的办法
6. 分布式+集群简介
- 分布式系统(distributed system):由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。
分布式系统是建立在网络之上的软件系统
。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在不同的平台上如:Pc、工作站、局域网和广域网上等。 - 分布式:
不同的多台服务器上面部署不同的服务模块(工程)
,他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作 - 集群:
不同的多台服务器上面部署相同的服务模块
,通过分布式调度软件进行统一的调度,对外提供服务和访问
二、Redis入门介绍
1. 入门概述
1. 是什么
- Redis:
RE
moteDI
ctionaryS
erver (远程字典服务器) - 是完全开源免费的,用c语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,也被人们称为数据结构服务器
- Redis与其他key-value缓存产品相比有以下三个特点
Redis支持数据的持久化
,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载使用- Redis不仅仅支持简单的的key-value类型的数据,同时
还提供list、set、zset、hash
等数据结构的存储 Redus支持数据的备份
,即master-slave模式的数据备份
2. 能干嘛
- 内存存储持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
- 取最新n个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
- 模拟类似于HttpSession这种需要设定过期时间的功能
- 发布、订阅信息系统
- 定时器,计数器
3. redis的安装
尚硅谷超经典Redis教程,redis实战,阳哥版从入门到精通
4.redis启动后的杂项基础知识
- redis启动
- 单进程
- 默认16个数据库,类似数组下标从0开始,初始默认使用零号库
- Select命令切换数据库
- Dbsize:查看当前数据库的key的数量
- Flushdb:清空当前库
- Flushall:通杀全部库
- 统一密码管理,16个库都是统一的密码,要么都OK要么一个都连接不上
- Redis索引都是从0开始
- 为什么默认端口是6379 —— merz
三、Redis数据类型
1. Redis的五大数据类型
- String(字符串)
- Hash(哈希,类似Java里的Map)
- List(列表)
- Set(集合)
- Zset(sorted set:有序集合)
2. 哪里去获得Redis常见数据类型操作命令
Redis 命令参考:http://redisdoc.com/
3. Redis键(key)
keys *
:查看当前库的全部keyexist key
:判断某个key是否存在move key db
:将当前库的key移到db库expire key 秒钟
:为给定key设置过期时间ttl key
:查看还有多少秒过期,-1表示永不过期,-2表示已过期type key
:查看key是什么类型
4. Redis字符串(String)
5. Redis列表(List)
6. Redis集合(Set)
7. Redis哈希(Hash)
8. Redis有序集合Zset(sorted set)
四、解析配置文件,redis.conf
1. 它在哪
将其拷贝一份出来修改
2. Unit单位
3. INCLUDES包含
4. GENERAL通用
5. SHAPSHOTTING快照
6. REPLICATION复制
7. SECURITY安全
8. LIMITS限制
9. APPENDONLY MODE 追加
10. 常见配置redis.conf介绍
五、Redis的持久化
1.RDB(Redis DataBase)
官网介绍:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里
1.是什么
2.fork
Fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程
3.Rdb保存的是dump.rdb文件
4. 配置位置
SHAPSHOTTING快照
5.如何触发RDB快照
6.如何恢复
7.优势
8.劣势
9.如何停止
10.小总结
2.AOF(Append Only File)
官网介绍:
1.是什么
2.Aof保存的是appendonly.aof文件
3.配置位置
4.AOF启动/修复/恢复
5.Rewrite
6.优势
7.劣势
8.小总结
3.总结
六、Redis的事务
1.是什么
2.能干嘛
3.怎么玩
1.常用命令
2.case1:正常执行
3.case2:放弃事务
4.case3:全体连坐(类似于Java的编译时错误)
5.case4:冤头债主(类似于Java的运行时错误)
6.case5:watch监控
-
悲观锁(
类似于MySQL的表锁
)
-
乐观锁(
在每条记录之后加一个version作为标记
)
-
CAS(Check and Set)
-
总结
4.三阶段
5.三特性
七、Redis的发布订阅
1.是什么
2.命令
3.案例
八、Redis的复制(Master/Slave)
1.是什么
2.能干嘛
- 读写分离
- 容灾恢复
3.怎么玩
1.配从(库)不配主(库)
2.从库配置:slaveof 主库IP 主库端口
3.修改配置文件的细节操作
- 拷贝多个redis.conf文件
- 开启daemonize yes
- Pid文件名称
- 指定端口
- Log文件名字
- Dump.rdb名字
4.常用3招
a、一主二仆
读写分离
b、薪火相传
c、反客为主
slaveof no one
4.复制原理
5.哨兵模式(sentinel)
1.是什么
2.怎么玩
之前的master重启回来后,成为新的master的slave