目录
5. flushdb: 清空当前库,Flushall:清空全部数据库(不要轻易使用)
NoSQL简介
NoSQL, 全称Not Only SQL,意为不仅仅是SQL,泛指非关系型数据库。
一、NoSQL数据库四大类介绍
1. 键值存储数据库:redis,memcache、Oracle BDB等
2. 文档型数据库:MongoDB,CouchDB
3. 列存储数据库:分布式文件系统,HBase,Cassandra
4. 图形数据库:Neo4J、InfoGrid等 ps:放的是关系不是图形,例如:朋友圈社交网络,广告推荐等
二、传统的ACID分别是什么
A:atomicity:原子性
C:consistency:一致性
I:isolation:独立性
D:durability:持久性
三、CAP是什么
C:Consitency:强一致性
A:Availability:可用性
P:Partition tolerance:分区容错性
四、CAP理论
CAP理论就是说在分布式存储系统中,最多只能实现上面的两点
由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容错性是我们必须要实现的
所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求
最多只能同时较好的满足两个
因此,根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三大类:
CA:单点集群,满足一致性、可用性的系统,通常扩展性较差
CP:满足一致性、分区容错性的系统,通常性能不是特别高
AP:满足可用性,分区容错性,通常可能对一致性要求较低
五、针对CAP的3进2问题,BASE理论的提出
关系型数据库的强一致性引发的一些问题会导致可用性降低,BASE就是为了解决可用性降低而提出的一种解决方案
BASE其实是下面三个术语的缩写:
BA:基本可用(Basically Available)
S:软状态(Soft state)
E:最终一致(Eventually consistent)
它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观。为什么这么说呢,缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们必须采用另外一种方式来完成,这里BASE就是解决这个问题的办法(eg:淘宝双十一当天,对于商品的评论和访问数可能不那么重要,首先要保证服务器的高可用性,服务器宕机就什么都白搭了,等双十一过后再在一定的时间内完成最终的数据一致性)
六、分布式与集群简介
分布式
分布式系统(Distributed system)
由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是搭建在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在不同的平台上。eg:PC、工作站、局域网以及广域网等
集群
集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。
集群是一组相互独立的、通过高速网络互连的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。
集群与分布式的区别
简单来说:
分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作。
集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。
举个栗子:
分布式:招三个厨师(服务器),分别切菜,炒菜,端菜,完成为顾客的服务
集群:招三个厨师(服务器),每个厨师都可以单独完成切菜、炒菜、端菜的完整操作
七、Redis启动后小知识点汇总
1. 单进程
单进程模型来处理客户端的请求。对读写等时间的响应是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率
epoll是Linux内核为处理大批量文件描述符而做了改进的epoll,是Linux下IO多路复用接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
2. Redis自带的数据库
默认16个数据库,类似数据下表从0开始,初始默认使用0号库
3. select命令切换数据库
4. dbsize查看数据库的key的数量
5. flushdb: 清空当前库,Flushall:清空全部数据库(不要轻易使用)