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.mzph.cn/bicheng/78615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity ML-Agents + VScode 环境搭建 Windows

安装Unity 先去官网下载Unity Hub,然后安装在D盘就可以了,你需要手机上安装一个Unity Connect进行账号注册。 详细的注册可以参考: https://blog.csdn.net/Dugege007/article/details/128472571 注册好了以后登入电脑端的Unity Hub&#x…

Linux电源管理(2)_常规的电源管理的基本概念和软件架构

原文: Linux电源管理(2)_Generic PM之基本概念和软件架构 1. 前言 Linux系统中那些常规的电源管理手段,包括关机(Power off)、待机(Standby or Hibernate)、重启(Reboot)等。这些…

机器学习基础理论 - 分类问题评估指标

几个定义:混淆矩阵 TP: True Positives, 表示实际为正例且被分类器判定为正例的样本数FP: False Positives, 表示实际为负例且被分类器判定为正例的样本数FN: False Negatives, 表示实际为正例但被分类器判定为负例的样本数TN: True Negatives, 表示实际为负例且被分类…

在线教育系统开发常见问题及解决方案:源码部署到运营维护

当下,越来越多的教育机构、企业培训部门以及创业者,选择开发属于自己的在线教育系统。然而,从源码部署到实际运营,整个过程中常常会遇到一系列技术与管理难题。今天,笔者将从在线教育系统源码维护、运营等几个方向为大…

RAG(Retrieval-Augmented Generation,检索增强生成)

RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合 信息检索 和 文本生成 的技术,旨在提升大语言模型(LLM)生成内容的准确性和时效性。其核心思想是:先检索相关知识,再基…

项目实战 -- 状态管理

redux基础 还记得好久好久之前就想要实现的一个功能吗? 收起侧边栏折叠菜单,没错,现在才实现 因为不是父子通信,所以处理起来相对麻烦一点 可以使用状态树或者中间人模式 这就需要会redux了 Redux工作流: 异步就…

Go语言之路————指针、结构体、方法

Go语言之路————指针、结构体、方法 前言指针结构体声明初始化使用组合引用结构体和指针结构体的标签 方法例子结合结构体总结 前言 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触Go…

[创业之路-390]:人力资源 - 社会性生命系统的解构与重构:人的角色嬗变与组织进化论

前言: 人、财、物、信息、机制、流程、制度、方法共同组合了一个持续的消耗资源、持续的价值创造、持续面临生存与发展、遗传与变异的社会性生命系统。 "人"是所有社会性生命系统最最基础性的要素,它弥漫在系统中多维立体空间的不同节点上&am…

JS执行器在UI自动化测试中的应用

前言 在进行UI自动化过程会遇到滚动条下拉、隐藏元素定位、只读属性元素的编辑、富文本处理等,此时可以使用JS执行器简化我们的一些处理操作。 具体应用 JS执行器的使用步骤: 1.先写个JS脚本,如果需要获取操作后的值,JS脚本前面…

解析Suna:全球首款开源通用AI智能体

导语: 嘿,哥们儿,最近 AI Agent 这块儿挺火的,有个叫 Suna 的开源项目冒出来挺快!听说只用了 3 周就开发出来了,但功能上感觉已经能跟那个商业版的 Manus掰掰手腕了。它能帮你搞定浏览器自动化、管文件、爬…

模板方法模式:定义算法骨架的设计模式

模板方法模式:定义算法骨架的设计模式 一、模式核心:模板方法定义算法骨架,具体步骤延迟到子类实现 在软件开发中,经常会遇到这样的情况:某个算法的步骤是固定的,但具体步骤的实现可能因不同情况而有所不…

浅谈Java 内存管理:栈与堆,垃圾回收

在Java编程世界里,内存管理是一项极为关键的技能,它就像程序运行背后的“隐形守护者”,默默影响着程序的性能与稳定性。今天,咱们就来简单学习一下Java内存管理中的两大核心要点:栈与堆的内存分配机制,以及…

【WebGL小知识】WebGL平台上不同Json的比较

今天来总结一下WebGL平台上不同Json插件的差别,话不多说直接开始。 JsonUtility JsonUtility是Unity自带的Json解析,无需另外安装插件。 优点: Unity自带,兼容性好,WebGL平台可以使用轻量级,性能较好。 …

4.22tx视频后台开发一面

总时长大概在一个小时,主要提问C、操作系统、计网以及数据库等方面,最后两个算法编程题。 一上来先介绍项目 Linux下的mybash命令处理器和内存池 mybash可以再总结归纳一下,一上来有点紧张没有条理 内存池是用边界标识法写的,…

从StandardMaterial和PBRMaterial到PBRMetallicRoughnessMaterial:Babylon.js材质转换完全指南

在现代3D图形开发中,基于物理的渲染(PBR)已成为行业标准。本文将深入探讨如何在Babylon.js中将传统StandardMaterial和PBRMaterial转换为PBRMetallicRoughnessMaterial,并保持视觉一致性。 为什么需要转换? PBRMetallicRoughnessMaterial作…

UEditor文档在Servlet项目上的应用

UEditor 是一款功能强大的富文本编辑器,在项目中应用广泛。 Ueditor使用 引入 UEditor 下载 UEditor:从 UEditor 官方网站(ueditor 官网)下载适合项目需求的版本。解压文件:将下载的压缩包解压到项目的静态资源目录…

ThinkPHP快速使用手册

目录 介绍 安装(windows环境) 安装Composer 安装ThinkPHP 目录结构 配置文件 第一个接口(Controller层) Hello World 自定义Controller 请求参数 获取查询参数(Get请求) 获取指定请求参数 获取…

面向 C# 初学者的完整教程

🧱 一、项目结构说明 你的项目大致结构如下: TaskManager/ ├── backend/ │ ├── TaskManager.Core/ // 实体类和接口 │ ├── TaskManager.Infrastructure/ // 数据库、服务实现 │ └── TaskManager.API/ // We…

Axios 的 GET 和 POST 请求:前端开发中的 HTTP 通信

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…

【前端】如何检查内存泄漏

在实际的场景中,如果观察到内存持续出现峰值,并且内存消耗一直没有减少,那可能存在内存泄漏。 使用 Chrome DevTools 来识别内存图和一些内存泄漏,我们需要关注以下两个方面: ● 使用性能分析器可视化内存消耗&#xf…