Redis使用总结
NoSQL
1.1为什么要用NoSQL
面对现在用户数据的急剧上升,我们需要对这些用户数据进行挖掘,传统的关系型数据库已经不适合这些 应用了.Nosql 的发展可以很了的处理这些大的数据.
1.2什么是NoSQL
Not Only Sql->NoSQL(不仅仅是SQL)
非关系型数据库.随着web2.0 网站的兴起,传统的关系型数据库已经无法面对web2.0, 特别是大规模和高 并发的SNS 类型的web2.0 纯动态网站了,暴露了许多难以克服的困难.而非关系型数据库则由于其本身的 特点得到了迅速的发展.NoSQL 数据库的产生就是为了解决在规模数据集合多种数据种类带来的挑战,尤 其是大数据应用难题.包括超大规模数据的存储.
面对每天用户大量的数据,有些数据的类型不需要固定的模式,无需多余的操作就可以进行横向扩展
1.3 NoSQL能干什么
1: 易扩展
2: 大数据量高性能
3: 多样灵活的数据模型
4:传统RDBMS VS NOSQL
1:易扩展
NoSQL 数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型我.
数据之间无关系,这样就非常容易扩展,也无形之间在架构的层面上带来了可扩展的能力.
2:大数据量高性能
NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀.这得益于他的无关系性,数据库 的结构简单.
一般MySQL使用Query Cache,每次表的更新Cache就失效,是一种大粒度的Cache,在针对web2.0 的交互 频繁的应用,Cache 性能不高,而NoSQL 的Cache 是记录级的.是一种细粒度的Cache,所以NoSQL 在这个层 面上来说就要性能高很多了
3:多样灵活的数据模型
NoSQL 无需事先为要存储的数据建立字段.随时可以存储自定义的数据格式,而在关系数据库里.增删字段 是一件非常麻烦的事情.如果是非常大数据量的表.增加字段简单就是一个噩梦
4:传统 RDBMS VS NOSQL
RDBMS--> 传统关系型数据库.
●高度组织化结构化数据.
●结构化查询语言(SQL).
●数据和关系都存储在单独的表中.
●数据操纵语言,数据定义语言.
●严格的一致性.
●基础事务
NoSQL
●代表着不仅仅是SQL
●没有声明性查询语言
●没有预订义的模式
●键值对存储,列存储,文档存储,图形数据库
●最终一致性.而非ACID 属性.
●非结构化和不可预知的数据
● CAP定理
●高性能,高可用,可伸缩性
1.4去哪下
-
1:Redis
2:Memcache
3:Mongdb (基于分布式文件存储数据库,旨在为webAPP提供可扩展的高性能数据存储解决方案,是一个 介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的)
高速缓冲--> Memcache
一庄多能,数据类型丰富-->Redis
1.5怎么玩
- Key-Value
- Cache 高速缓冲
- Persistence
1.6 3V3高
● 海量 Volume大数据时代的3V:● 多样 Variety
● 实时Velocity 互联网需求的3高:
VS
● 高 并 发
● 高 可 扩
● 高 性 能
3 NoSQL数据模型简介
聚合模型:
1:KV 键值对
2:BSon(类似于JSON)
3:列族(按列存储数据,最大特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或某几 列的查询有非常大的IO 优势)
4:图 形
4 NoSQL DB 四大分类
KV 键值(Redis)
优势:查找速度快
缺点:数据无结构化,通常只被当作字符串或二进制数据
文档型数据库(MongoDB)bson 格式比较多
优势:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构
缺点:查询性能不高,而且缺乏统一的查询语法.
列存储数据库(Cassandra,HBase) 分布式文件系统
优势:查找速度快,可扩展性强,更容易进行分布式扩展
缺点:功能相对局限
图关系数据库(Neo4J,InfoGrid) 他不是放图形的,放的是关系比如朋友圈社交网络,广告推荐系统,社交网 络,推荐系统等,专注于构建关系图谱
优势:利用图结构相关算法,比如最短路径寻址,N度关系查
缺点:很多时候需要对整个图做计算才能得出需要的信息而且这种结
新浪:BerkeleyDB+redis
美团:redis+tair
阿里,百度:memcache+redis
5 分布式数据库CAP 原理
5.1 ACID vs CAP
传统关系型数据库-->ACID:
英文 | 中文 |
Atomicity | 原子性 |
Consistency | 一致性 |
Isolation | 独立性 |
Durability | 持久性 |
事务:transaction, 与现实中的交易很类似.
● Atomicity(原子性)
指事务里的所有操作要么都做完,要么都不做.事务成功的条件是事务的所有操作都成功,只要有一个 操作失败,整个事务就失败.需要回滚.
·Consistency (一致性)
指数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束
● Isolation(独立性)
指事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务 未提交.他所访问的数据就不受未提交事务的影响. (比如你正在查看你的银行账户,有人正在给你转 钱,如果这个转钱的动作未提交,你查的时候是看不到这笔钱的)
● Durability(持久性)
指事务一旦提交,他所做的修改将会永久的保存在DB 中
NoSQL 非关系型数据库-->ACID:
英文 | 中文 |
Consistency | 一致性 |
Availability | 可用性 |
Partition tolerance | 分区容错性 |
·Consistency (一致性) 数据保持一致
● Availability(可用性) 不能出错
● Partition tolerance(分区容错性)
ACID必须4个条件都满足,但是NoSQL 只能三选二(上面表格中的三个特性满足两个)
5.2 CAP中的3进2
CAP 核心理论:
一个分布式系统不可能同时很好的满足一致性.可用性和分区容错性这三个需求,最多满足两个 所以,根据该理论将NoSQL分成了三大类
● CA原则
单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大.
● CP原 则
满足一致性.分区容错性的系统,通常性能不是特别高.
● AP 原 则
满足可用性,分区容错性的系统,通常可能对一致性要求低一些.。
原则 | 适用 |
CA | 传统Oracle数据库 |
AP | 大多数网站架构的选择 |
CP | Redis,Mongodb |
数据库事务一致性需求
很多web 实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求并不高, 允许实现最终一致性.
数据库的写实时性与读实时性需求
对ACID 来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的.但是对于很多 webAPP 来说,并 不要求这么高的实时性.比方说发一条消息后.过几秒或十几秒后.订阅者才看到这条动态是完全可以接受 的 .
对复杂的SQL查询,特别是多表关联查询的需求
任何大数据量的webAPP,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的报表查询,特别是 SNS 类型的网站,从需求以及产品设计角度,就避免了这种情况的产生,往往更多的只是表单的主键查询,以 及表单的简单条件分页查询,SQL 的功能被极大的弱化了.
5.3什么是BASE
BASE 是为了解决关系型数据库强一致性引起的问题而引起的可用性降低而提出的解决方案.
BASE:
中文 | 英文 |
基本可用 | Basically Available |
软状态 | Soft state |
最终一致 | Eventually consistent |
中 心 :
通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观,因为在大型系统往 往由于地域分布和极高性能的要求.不可能采用分布式逗我来完成这些指标,要想获得这些指标,我们必须 采用别的方式完成,于是BASE出现了 。
5.4分布式与集群
分布式:把一个系统不同模块的服务分别放在不同台服务器上,通过API进行通信和调用.对外提供服务和组 内协作 .
集群:在多台服务器上部署相同的服务模块.通过分页式调度软件进行统一的调度.
6 Redis 入门
6.1 Redis是什么
Redis:REmote DIctionary Server(远程字典服务器)
完全开源免费,用C 语言编写,遵守 BSD 协议,是一个高性能的(Key/value)分布式内存数据库.基于内存运 行.并支持持久化的NoSQL 数据库.是当前最热门的 NoSQL 数据库之一.也被人们称作:数据结构服务器 特 点 :
No | Redis特点 |
1 | Resid支持数据的持久化,可以将内存中的数据保持在磁盘中.重启的时候可以再次加载使用 |
2 | Redis不仅仅支持简单的Key-Value类型的数据.同时还提供List,set,zset,hash等数据结构的 存储 |
3 | Resid支持数据的备份,即master-slave模式的数据备份 |
6.2 Redis能做什么
No | 作用 |
1 | 内存存储和持久化:Redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务 |
2 | 取最新N个数据的操作.如:将最新的10条评论的ID放在Redis的List集合里面 |
3 | 模拟类似于HttpSession这种需要设定过期时间的功能 |
4 | 发布,订阅消息系统 |
5 | 定时器,计数器 |
6.3下载
Redis - The Real-time Data Platform
http://www.redis.cn
6.4 安装
OS:ubuntu18.04 安装Redis-Server | 指令: |
| |
安装Ubuntu 网络辅助工具 | |
| |
安装完成通过命令检查Redis 服务器状态 | |
| |
通过命令检查Redis服务器状态 | |
|