【Redis3.0.x】NoSql 入门
Redis3.0.x NoSql 入门
概述
NoSQL(Not Only SQL ),即不仅仅是 SQL,泛指非关系型的数据库。NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。
NoSQL 和 RDBMS 的区别:
- Redis 是 NoSQL 数据库,而 RDBMS 是 SQL 数据库。
- Redis 遵循键值结构,而 RDBMS 遵循表结构。
- Redis 非常快,而 RDBMS 相对较慢。
- Redis 将所有数据集存储在主存储器中,而 RDBMS 将其数据集存储在辅助存储器中。
- Redis 通常用于存储小型和常用文件,而 RDBMS 用于存储大文件。
3V3H
大数据 3V:
- 海量 Volume
- 多样 Variety
- 实时 Velocity
互联网 3H:
- 高并发
- 高可用
- 高性能
NoSql 四大分类
键值型数据库:
- 应用举例:Redis
- 应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于日志系统等
- 数据模型:key-value,通常使用 HashTable 来实现
- 优点:查找速度快
- 缺点:数据无结构化,通常只被当作字符串或者二进制数据
文档型数据库:
- 应用举例:MongoDB
- 应用场景:Web 应用
- 数据模型:key-value,但 value 是结构化数据
- 优点:数据结构要求不严格,表结构可变
- 缺点:查询性能不高,而且缺乏统一的查询语法
列存储数据库:
- 应用举例:HBase
- 应用场景:分布式的文件系统,大数据应用
- 数据模型:以列簇式存储,将同一列数据存在一起
- 优点:查找速度快,易于扩展
- 缺点:功能相对局限
图关系数据库:
- 应用举例:Neo4j、HugeGraph
- 应用场景:社交网络,推荐系统,构建关系图谱
- 数据模型:图结构
- 优点:查找速度快
- 缺点:不易拓展
CAP 原理
传统的关系型数据库遵循 ACID 原理,即:
- 事务:是逻辑上的一组操作,事务内的语句,要么全部执行成功,要么全部执行失败。
- 原子性(Atomicity):指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
- 一致性(Consistency):指数据库总是从一个一致性状态切换到另一个一致性状态。
- 隔离性(Isolation):指并发执行的一个事务之间不能互相干扰;
- 持久性(Durability):指事务一旦提交,它对数据库的改变是永久性的。
而非关系型数据库遵循 CAP 原理,即:
- 强一致性(Consistency):
- 高可用性(Availability):
- 分区容错性(Pratition tolerance):
CAP 原理的抉择:
一个分布式系统不可能同时很好的满足 一致性、可用性和分区容错性这三个需求,最多只能同时较好的满足两个。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有 NoSQL 系统能同时保证这三点。
经典的 CAP 搭配:
- CA - 单点集群,满足 一致性,可用性 的系统,通常在可扩展性上不太强大。例如 Oracle 数据库。
- CP - 满足 一致性,分区容忍性 的系统,通常性能不是特别高。例如 Redis、Mongodb。
- AP - 满足 可用性,分区容忍性 的系统,通常可能对一致性要求低一些。例如 大多数网站架构。

Base 简介:
- 基本可用(Basically available)
- 软状态(Soft state)
- 最终一致(Eventually consistent)
- BASE 就是为了解决关系数据库 强一致性 引起的问题,进而引起的可用性降低而提出的解决方案。
- 它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观。
分布式和集群
分布式:不同的多台服务器上面部署不同的服务模块(工程),它们之间通过 RPC/RMI 之间通信和调用,对外提供服务和组内协作。
集群:不同的多台服务器上面部署相同的服务模块(工程),通过分布式调度软件进行统一的调度,对外提供服务和访问。
练习和总结
【Redis3.0.x】NoSql 入门的更多相关文章
- Dubbo入门到精通学习笔记(十八):使用Redis3.0集群实现Tomcat集群的Session共享
文章目录 1.单节点访问http://192.168.1.61:8082/pay-web-boss/: 2.增加多一个消费者节点:192.168.1.62,以同样的方式部署pay-web-boss工程 ...
- linux安装redis-3.0.7
一.Redis介绍 1.简介 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类 ...
- Spring Boot 2.0 的快速入门(图文教程)
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! Spring Boot 2.0 的快速入门(图文教程) 大家都 ...
- Redis(一):NoSQL入门和概述
NoSQL入门和概述目录导航: NoSQL入门概述 3V+3高 当下的NoSQL经典应用 NoSQL数据模型简介 NoSQL数据库的四大分类 在分布式数据库中CAP原理CAP+BASE NoSQL 入 ...
- redis-3.0.0安装
redis-3.0.0安装 前言 redis是常用的no-sql数据库,常用于缓存数据,同时,他也可以持久化数据.他是C语言开发的,所以安装的时候需要编译. 单机版redis yum install ...
- NoSQL入门)(详细)
NoSQL入门 (原创:黑小子-余) 1.NoSQL是什么 NoSql(NoSQL=Not Only SQL),意即“不仅仅是SQL”,泛指菲关系型数据库.传统的关系数据库在应付web2.0网站,特别 ...
- Redis3.0 配置文件说明
背景: 以前有篇文章已经结果过了,现在复习一下,对Redis3.0进行说明: 参数说明: #redis.conf # Redis configuration file example. # ./red ...
- redis3.0.6安装(linux和windows)
官网上描述安装方法如下:$ wget http://download.redis.io/releases/redis-3.0.6.tar.gz$ tar xzf redis-3.0.6.tar.gz$ ...
- Redis3.0.1 Stable版本的集群部署(Mac)
本文档基于如下原始文档(CentOS)创建: http://blog.csdn.net/xu470438000/article/details/42971091 修改了一些路径的错误,补全了一些命令执 ...
随机推荐
- P5327 [ZJOI2019]语言
一边写草稿一边做题吧.要看题解的往下翻,或者是旁边的导航跳一下. 草稿 因为可以开展贸易活动的条件是存在一种通用语 \(L\) 满足 \(u_i\) 到 \(v_i\) 的最短路径上都会 \(L\) ...
- Java中构造代码块的使用
例子1 public class Client { { System.out.println("执行构造代码块1"); } { System.out.println("执 ...
- PHP 直接使用html输出excel
1 <?php 2 header("Cache-Control:public"); 3 header("Pragma:public"); 4 5 head ...
- Java8 - Stream流:让你的集合变得更简单!
前段时间,在公司熟悉新代码,发现好多都是新代码,全是 Java8语法,之前没有了解过,一直在专研技术的深度,却忘了最初的语法,所以,今天总结下Stream ,算是一份自己理解,不会很深入,就讲讲常用的 ...
- Linux-centos-64bit安装MySQL
1.下载mysql安装包到 /usr/local/soft [root@VM_0_9_centos ~]# cd /usr/local/soft[root@VM_0_9_centos soft]# w ...
- MySQL_CRUD_In_Terminal
MySQL的CRUD操作 从Terminal中,可以对数据库进行链接,无需GUI界面就可以对数据库进行相关操作.对于Linux.Windows.MacOS,也可以使用可视化软件Navicat.MySQ ...
- 【超详细】MakeDown(Typora)+PicGo+Gitee实现图床
[超详细]MakeDown(Typora)+PicGo+Gitee实现图床 序言:我们有时在用makedown整理笔记时想把自己的笔记上传到博客园,可是发现在上传过程中makedown中的图片显示不出 ...
- 使用Canvas绘制分享海报
这几天接到一个需求,需要将一个邀请链接转换为一个带有二维码并且能够分享出去的海报图,网上找了很多的方法,也踩了不少的坑,希望大家遇到类似的需求能够少走弯路.. 具体效果图如下: 效果图 首先我采用了 ...
- (一)NumPy基础:数组和矢量计算
一.创建ndarray 1.各种创建函数的使用 import numpy as np #创建ndarray #1.array方法 data1 = [[6, 7.5, 8, 0, 1], [2, 8, ...
- java中定时器设置时间
<!-- 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点 0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时 0 0 12 ? * WED 表示每个星期三中午1 ...