鸡汤:所有天上飞的理念,都需落地的实现
传统数据库ACID
A(Atomicity)原子性
C(Consistency)一致性
I(Isolation)独立性
D(Durabilty)持久性
非关系型数据库CAP
C(Consistency)强一致性
A(Availability)可用性
P(Partition tolerance)分区容忍性
在CAP原理中只能三进二,CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性、可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
因此,根据CAP原理将NoSQL数据库分成了满足CA原则,满足CP原则和满足AP原则三大类:
CA -单点集群,满足一致性,可用性的系统,通常在可扩展性不太强大。
CP -满足一致性,分区容忍必的系统,通畅性能不是特别高。
AP -满足可用性,分区容忍性的系统,通常对一致性要求低一点。
所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统同时保证这三点:
CA :传统Oracle数据库
CP :Redis、Mongodb
大多数网站因为对集群分布式的需求,所以必须保证P的存在,但是在一致性和高可用性下,高可用更加必备。
BASE是什么
BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
BASE就是下面三个术语的缩写:
基本可用(Basically Available)
软状态(Soft state)
最终一致性(Eventually consistent)
它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观,为什么这么说呢,缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们必须采用另外一种方式完成,这里BASE就是解决这个问题的办法。
分布式+集群简介
分布式系统(distributed system)
由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在不同的平台上如:Pc、工作站、局域网和广域网等。
1 分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作。
2集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。
Redis:REmote Dictionary Server(远程字典服务器)
Redis的特点:
1 Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
2 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
3 Redis支持数据的备份,即master-slave模式的数据备份
下载
中文官网http://www.redis.cn/
英文官网https://redis.io/
Linux redis-4.0.6版本:
链接:https://pan.baidu.com/s/1NXXdEniQ3gkkAA4VOsQkGQ
提取码:om7m
备注:在redis官网下载页面提供了安装教程
$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make
安装
首先通过ftp将下载好的redis版本导入linux中。
解压redis文件
tar -zxvf redis-3.0.4.tar.gz
将解压好的redis 放到/usr/local/redis
mv redis-3.0.4 /usr/local/redis
进入redis-3.0.4目录下执行make
make
make install
备注:如果make出现gcc错误,则需要安装gcc
yum install gcc
yum install glibc-headers
yum install gcc-c++
部署
为了方便管理,创建bin和etc目录将常用命令和配置文件移动到相应文件下。
(1) 在redis目录下创建bin和etc 文件
(2)将redis.conf移动到etc目录下
(3) 进入src目录
(4)移动 mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server到/usr/local/redis/bin/
执行命令 :
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /usr/local/redis/bin/
(5)启动redis ./redis-server
(6)进入到etc下查看redis.conf文件进行配置文件的修改
(7)设置后台启动redis,修改daemonize文件,将no 改为yes 后键盘ESC输入:wq!保存
(8)进入bin目录后重新启动 redis-server /usr/local/redis/etc/redis.conf
(9)连接客户端