Redis篇(初识Redis)

目录

一、数据库

二、NoSQL

三、认识Redis

三、关系数据库与非关系数据库对比

1. 结构化与非结构化

2. 关联和非关联

3. 查询方式

4. 事务

5. 存储方式

6. 扩展性

7. 总结

7.1. 图形梳理

7.2. 表格梳理

7.3. 优缺点

关系型数据库

非关系型数据库

四、再次认识Redis

1. 简介

2. 特征

3. 历史简介

4. 支持语言

5. 总结

五、你知道使用Redis能做什么?


一、数据库

① K-V:Redis,Memcache

② 文档:MongoDB

③ 搜索:Elasticsearch,Solr

④ 可扩展性分布式:HBase

二、NoSQL

NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。

是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库

三、认识Redis

Redis是一种键值型的NoSql数据库,这里有两个关键字:

  • 键值型
  • NoSql

其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符

串、数值、甚至json:

而NoSql则是相对于传统关系型数据库而言,有很大差异的一种数据库。

三、关系数据库与非关系数据库对比

1. 结构化与非结构化

传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,

非关系型数据库则对数据库格式没有严格约束,往往形式松散,自由。

它可以是键值型,也可以是文档型,还可以是图格式,等等。

可以是键值型

也可以是文档型

甚至可以是图格式

2. 关联和非关联

传统数据库的表与表之间往往存在关联,例如,外键关联,

而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合。

案例:

传统数据库的表与表之间往往存在关联,例如外键:

而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合:

{id: 1,name: "张三",orders: [{id: 1,item: {id: 10, title: "荣耀6", price: 4999}},{id: 2,item: {id: 20, title: "小米11", price: 3999}}]
}

此处要维护“张三”的订单与商品“荣耀”和“小米11”的关系,不得不冗余的将这两个商品保存在张三的订单

文档中,不够优雅。

还是建议用业务来维护关联关系。

3. 查询方式

传统关系型数据库会基于Sql语句做查询,语法有统一标准;

而不同的非关系数据库查询语法差异极大,五花八门各种各样。

4. 事务

传统关系型数据库能满足事务ACID的原则。

而非关系型数据库往往不支持事务,或者不能严格保证ACID的特性,只能实现基本的一致性。

5. 存储方式

关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响

非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能自然会好一些

6. 扩展性

关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。

非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。

称为水平扩展。

关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦

7. 总结

7.1. 图形梳理

  • 存储方式
    • 关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响
    • 非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能自然会好一些
  • 扩展性
    • 关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。
    • 非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展。
    • 关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦

7.2. 表格梳理

内容

关系型数据库

非关系型数据库

成本

有些需要收费(Orcale)

基本都是开源

查询数据

存储存于硬盘中,速度慢

数据存于缓存中,速度快

存储格式

只支持基础类型

K-V,文档,图片等

扩展性

有多表查询机制,扩展困难

数据之间没有耦合,容易扩展

持久性

适用持久存储,海量存储

不适用持久存储,海量存储

数据一致性

事务能力强,强调数据的强一致性

事务能力弱,强调数据的最终一致性

7.3. 优缺点

关系型数据库

采用关系模型来组织数据的数据库,关系模型就是二维表格模型。

一张二维表的表名就是关系,二维表中的一行就 是一条记录,二维表中的一列就是一个字段。

优点:

① 容易理解

② 使用方便,通用的sql语言

③ 易于维护,丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概 率

缺点:

① 磁盘I/O是并发的瓶颈

② 海量数据查询效率低

③ 横向扩展困难,无法简单的通过添加硬件和服务节点来扩展性能和负载能力,

当需要对数据库进行升级和扩展 时,需要停机维护和数据迁移

④ 多表的关联查询以及复杂的数据分析类型的复杂sql查询,性能欠佳。

因为要保证acid,必须按照三范式设计。

数据库:

Orcale,Sql Server,MySql,DB2

非关系型数据库

非关系型,分布式,一般不保证遵循ACID原则的数据存储系统。键值对存储,结构不固定。

优点:

① 根据需要添加字段,不需要多表联查。仅需id取出对应的value

② 适用于SNS(社会化网络服务软件。比如facebook,微博)

③ 严格上讲不是一种数据库,而是一种数据结构化存储方法的集合

缺点:

① 只适合存储一些较为简单的数据

② 不合适复杂查询的数据

③ 不合适持久存储海量数据

四、再次认识Redis

1. 简介

Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器,它是用C语言开发的一个开源的高性能

键值对(key-value)基于内存的键值型NoSQL数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次

数),是互联网技术领域使用最为广泛的存储中间件。它存储的value类型比较丰富,因此,也被称为结构化的

NoSql数据库。它可以用作数据库、缓存和消息中间件。

它支持多种类型的数据结构,如字符串(strings) ,散列(hashes),列表(lists),集合(sets) , 有序集

合(sorted sets)与范围查询,bitmaps, hyperloglogs和地理空间(geospatial)索引半径查询。

Redis内置了复制(replication),LUA脚本(Lua scripting),LRU驱动事件(LRU eviction),事务

(transactions)和不同级 别的 磁盘持久化(persistence),并通过Redis哨兵(Sentinel) 和自动分区

(Cluster)提供高可用性(high availability)

关系型数据库(RDBMS)

  • Mysql
  • Oracle
  • DB2
  • SQLServer

非关系型数据库(NoSql)

  • Redis
  • Mongo db
  • MemCached

2. 特征

  • 基于内存存储,读写性能高

  • 适合存储热点数据(热点商品、资讯、新闻)

  • 企业应用广泛
  • 键值(key-value)型,value支持多种不同数据结构,功能丰富
  • 单线程,每个命令具备原子性
  • 低延迟,速度快(基于内存、IO多路复用、良好的编码)
  • 支持数据持久化
  • 支持主从集群、分片集群
  • 支持多语言客户端

3. 历史简介

2008年,意大利一家创业公司Merzia的创始人Salvatore Sanfilippo为了避免MySQL的低性能,亲自定做一个数

据 库,并于2009年开发完成,这个就是Redis。从2010年3月15日起,Redis的开发工作由VMware主持。从

2013年5月开始,Redis的开发由Pivotal赞助。

说明:

Pivotal公司是由EMC和VMware联合成立的一家新公司。

Pivotal希望为新一代的应用提供一个原生的基础,建 立在具有领导力的云和网络公司不断转型的IT特性之上。

Pivotal的使命是推行这些创新,提供给企业IT架构师和独立 软件提供商。

作者:Antirez

Redis的官方网站地址:Redis - The Real-time Data Platform

4. 支持语言

5. 总结

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支

持多种类型的数据结构,如字符串(strings) ,散列(hashes),列表(lists),集合(sets) , 有序集合

(sorted sets)与范围查询,bitmaps, hyperloglogs和地理空间(geospatial)索引半径查询。 Redis内置了

复制(replication),LUA脚本(Lua scripting),LRU驱动事件(LRU eviction),事务(transactions)和不

同级 别的 磁盘持久化(persistence),并通过Redis哨兵(Sentinel) 和自动分区(Cluster)提供高可用性

(high availability)

五、你知道使用Redis能做什么?

  • 数据缓存
  • 消息队列
  • 注册中心
  • 发布订阅
  • 短信验证码
  • . . .

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880407.shtml

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

相关文章

word中的表格全部设置宽度100%

1、背景 我们用工具将数据库或其他的数据导出成word时,表格有的会大于100%,超过了边界。word没有提供全局修改的方法。如果我们想改成100%。 一种方式是通过宏,全局改。一种是手动改。 2、宏修改 如果表格多,可以通过这种方式。…

【Qt】前后端交互---DataCenter类

设计目的 前后端交互系统中,创建并使用数据核心类的目的就是让该类作为客户端的数据中心,也就是说其负责管理客户端的所有数据与服务器的网络通信。 数据持久化 初始化数据文件 该函数设计的目的就是用于检查所需要的文件和目录是否存在,如…

You are not allowed to push code to this project

原因1 用户权限不够。 具体查看用户权限路径: 原因2 vscode之前都能提交代码,但是突然就提交不上了。 表现为:前端代码能拉取,但是不能提交。使用idea进行前端代码的提交,完全没问题。 解决方案:修改TortoiseG…

新160个crackme - 066-Andrnalin.3

运行分析 文字是德语,需要破解Key PE分析 VB程序,32位,无壳 静态分析&动态调试 使用 VB Decompiler 静态分析,发现逻辑如下:1、提取Key每个字符 102、计算后的Key要与"kXy^rO|yXom\kMuOn*"相等 算法分析…

25 基于51单片机的温度电流电压检测系统(压力、电压、温度、电流、LCD1602)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,通过DS18B20检测温度,滑动变阻器连接数模转换器模拟电流、电压,通过LCD1602显示,程序里设置温度阈值为40,电流阈值为60&am…

[大语言模型-论文精读] 以《黑神话:悟空》为研究案例探讨VLMs能否玩动作角色扮演游戏?

1. 论文简介 论文《Can VLMs Play Action Role-Playing Games? Take Black Myth Wukong as a Study Case》是阿里巴巴集团的Peng Chen、Pi Bu、Jun Song和Yuan Gao,在2024.09.19提交到arXiv上的研究论文。 论文: https://arxiv.org/abs/2409.12889代码和数据: h…

openKylin--安装 .net6.0

编辑profile文件 cd .. //切换到根目录 cd /etc //切换到etc目录 vim profile //b编辑profile文件 1. 按→键移动到文件末尾 2. 按Insert键进入编辑模式 3. 按Enter另起一行开始编辑 export DOTNET_ROOT/home/dotnetexport PATH$PATH:/home/dotnet 可以通过右键--粘贴 的…

使用Crawler实例进行网页内容抓取

网页内容抓取的背景 随着互联网的快速发展,网页上的信息量日益庞大。如何从海量的网页中快速、准确地抓取所需信息,成为了一个技术挑战。网页内容抓取技术通过自动化的方式,模拟用户浏览网页的过程,获取网页上的文本、图片、链接…

通信工程学习:什么是FDD频分双工

FDD:频分双工 FDD(频分双工,Frequency Division Duplexing)是一种无线通信技术,它通过将频谱划分为上行和下行两个不重叠的频段来实现同时双向通信。以下是FDD频分双工的详细解释: 一、定义与原理 定义: FDD是一种无线通信系统的工作模式,其中上行链路(从移动…

开源链动 2+1 模式 S2B2C 商城小程序:激活 KOC,开启商业新征程

摘要:本文深入探讨了 KOC 在立体连接中的重要性,以及如何通过开源链动 21 模式 S2B2C 商城小程序发现和找到更多的 KOC。强调了历史积累强关系和快速强化强关系的方法,并阐述了该商城小程序在推动商业发展中的关键作用。 一、引言 在当今竞争…

webpack4 target:“electron-renderer“ 打包加速配置

背景 昨天写得一篇Electron-vue asar 局部打包优化处理方案——绕开每次npm run build 超级慢的打包问题-CSDN博客文章浏览阅读754次,点赞19次,收藏11次。因为组员对于 Electron 打包过程存在比较迷糊的状态,且自己也没主动探索 Electron-vu…

vue初学随笔

Vue基础 Vue基本概念 Vue是什么 Vue是一个渐进式的JavaScript框架,它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。 渐进式:各个特性可以根据项目需要逐渐引入和…

C++ | Leetcode C++题解之第429题N叉树的层序遍历

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> levelOrder(Node* root) {if (!root) {return {};}vector<vector<int>> ans;queue<Node*> q;q.push(root);while (!q.empty()) {int cnt q.size();vector<…

【AI学习】Lilian Weng:Extrinsic Hallucinations in LLMs(LLM 的外在幻觉)

来自OpenAI 的 Lilian Weng的《Extrinsic Hallucinations in LLMs》 Date: July 7, 2024 | Estimated Reading Time: 30 min | Author: Lilian Weng 文章链接&#xff1a;https://lilianweng.github.io/posts/2024-07-07-hallucination/ 大概看了一下&#xff0c;这篇文章的核…

深度学习与应用:行人跟踪

**实验 深度学习与应用&#xff1a;行人跟踪 ** ------ **1、 实验目的** ------ - 了解行人跟踪模型基础处理流程 - 熟悉行人跟踪模型的基本原理 - 掌握 行人跟踪模型的参数微调训练以及推理的能力 - 掌握行人跟踪模型对实际问题的应用能力&#xff0c;了解如何在特定的场景和…

MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块

联发科Helio P35 MT6765安卓核心板 MediaTek Helio P35 MT6765是智能手机的主流ARM SoC&#xff0c;于2018年末推出。它在两个集群中集成了8个ARM Cortex-A53内核&#xff08;big.LITTLE&#xff09;。四个性能内核的频率高达2.3GHz。集成显卡为PowerVR GE8320&#xff0c;频率…

Snap 发布新一代 AR 眼镜,有什么特别之处?

Snap 发布新一代 AR 眼镜&#xff0c;有什么特别之处&#xff1f; Snap 简介 新一代的 AR 眼镜特点 Snap 简介 Snap 公司成立于 2010 年&#xff0c;2017 年美国东部时间 3 月 2 日上午 11 时许&#xff0c;在纽交所正式挂牌交易&#xff0c;股票代码为 “SNAP”。其旗下的核…

vue循环渲染动态展示内容案例(“更多”按钮功能)

当我们在网页浏览时&#xff0c;常常会有以下情况&#xff1a;要展示的内容太多&#xff0c;但展示空间有限&#xff0c;比如我们要在页面的一部分空间中展示较多的内容放不下&#xff0c;通常会有两种解决方式&#xff1a;分页&#xff0c;“更多”按钮。 今天我们的案例用于…

自建数据库VS云数据库:从《中国数据库前世今生》看未来数据管理的抉择

自建数据库VS云数据库&#xff1a;从《中国数据库前世今生》看未来数据管理的抉择 在数字化时代的滚滚洪流中&#xff0c;数据库作为核心数据管理工具&#xff0c;始终扮演着至关重要的角色。最近观看了纪录片《中国数据库前世今生》&#xff0c;让我对数据库技术的发展有了更…

11. Map和Set

一、二叉搜索树 1. 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根…