当前位置: 首页 > news >正文

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怎么玩

  1. Key-Value
  2. Cache 高速缓冲 
  3. 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

指令:

sudo       apt       install       redis-server

安装Ubuntu 网络辅助工具

sudo  apt      install      net-tools

安装完成通过命令检查Redis  服务器状态

netstat       -nlt   |grep      6379

通过命令检查Redis服务器状态

sudo     /etc/init.d/redis-server     status

http://www.mrgr.cn/news/100404.html

相关文章:

  • linux:进程的替换
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day21
  • git回退commit
  • w~嵌入式C语言~合集4
  • 【上位机——MFC】文档
  • Redis远程链接应用案例
  • CMCC RAX3000M CH EC 算力版刷机(中国移动 RAX3000M 算力版)刷机
  • 【STL】unordered_map
  • 毕业设计-基于机器学习入侵检测系统
  • 12.thinkphp验证
  • 毕业设计-基于深度学习的入侵检测系统
  • MYSQL 常用字符串函数 和 时间函数详解
  • RabbitMQ安装流程(Windows环境)
  • K8S Service 原理、图例——深度好文
  • 高性能服务器配置经验指南1——刚配置好服务器应该做哪些事
  • 详解最新链路追踪skywalking框架介绍、架构、环境本地部署配置、整合微服务springcloudalibaba 、日志收集、自定义链路追踪、告警等
  • 深入理解N皇后问题:从DFS到对角线优化
  • (六)RestAPI 毛子(外部导入打卡/游标分页/Refit/Http resilience/批量提交/Quartz后台任务/Hateoas Driven)
  • springboot应用使用shell脚本打包成部署压缩包(支持xjar)
  • 【深度学习】【目标检测】【Ultralytics-YOLO系列】YOLOV3核心文件common.py解读