Redis篇(初识Redis)

news2024/11/17 13:30:25

目录

一、数据库

二、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.coloradmin.cn/o/2168115.html

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

相关文章

LeetCode142. 环形链表 II(2024秋季每日一题 28)

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数…

C++:STL详解(二)string类的模拟实现

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 💫 欢迎来到我的学习笔记! 🔥🔥🔥🔥🔥本文参考文章&…

合同管理中的常见陷阱,你是否也中招了?

在合同管理中,很多企业常常会掉进一些意想不到的“陷阱”。这些问题可能在日常工作中看似无关紧要,但一旦忽视,往往会引发一系列严重的后果。合同信息管理混乱,导致重要条款被遗漏,签署文件时出现纰漏?合同…

Pygame中Sprite实现逃亡游戏4

在《Pygame中Sprite实现逃亡游戏3》中实现了玩家跳跃飞火的效果,接下来通过精灵类的碰撞检测来判断飞火是否击中玩家、飞火是否击中飞龙以及飞龙是否抓住玩家。 1 飞火是否击中玩家的判断 判断飞火是否击中玩家的代码如图1所示。 图1 判断飞火是否击中玩家的代码 …

大数据-144 Apache Kudu 基本概述 数据模型 使用场景

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

企业私有网盘怎么搭建?整理国内外主流 18 家方案厂商

目前市场上主流的企业网盘有360亿方云、坚果云、百度企业网盘、联想企业网盘、燕麦云智能企业云盘、腾讯企业网盘等等。就创立时间和用户量来看,联想企业网盘、360亿方云可以说第一梯队的存在。 企业需要的不仅仅是文档存储、分享和协作的简单管理工具,还…

AI无人直播新标杆,一站式直播解决方案:打造专属舞台!

AI无人直播新标杆,一站式直播解决方案:打造专属舞台! 在数字化浪潮的汹涌澎湃中,AI技术正以前所未有的速度渗透至各行各业,其中,直播行业作为数字内容传播的重要阵地,正经历着一场由AI引领的深刻…

pr视频剪辑、福昕剪辑……四款剪辑视频大比拼

最近入了视频剪辑的坑,我最近在尝试不同的视频剪辑软件,想找到最适合我的那一款。今天,我就来跟大家分享一下我使用福昕视频剪辑、爱拍视频剪辑、Adobe Premiere(简称PR)和Shotcut这四款软件时的一些体验和感受。希望我…

移动硬盘突然打不开:深度剖析、恢复策略与预防措施

突发困境:移动硬盘的沉默拒绝 在日常的数字生活中,移动硬盘作为数据存储与传输的重要工具,扮演着不可或缺的角色。然而,当您急需访问存储在移动硬盘中的重要文件时,却遭遇了“突然打不开”的尴尬境地,这无…

C++ 3 个有序点的方向(Orientation of 3 ordered points)

给定三个点 p1、p2 和 p3,任务是确定这三个点的方向。 平面中有序三重点的方向可以是 逆时针 顺时针 共线 下图显示了 (a,b,c) 的不同可能方向 如果 (p1, p2, p3) 的方向共线,则 (p3, p2, p1) 的方向也共线。 如果 (p1, p2, p3) 的方向是顺时针&a…

idea不想提交前端代码,只提交.java和.xml文件配置

1.按图创建.gitignore文件 (忽略文件) 2.该文件的内容 直接cp /.gitignore *.DS_Store Thumbs.db *.sw? .#* *# *~ *.sublime-* # Build Artifacts .gradle/ build/ target/ bin/ dependency-reduced-pom.xml # Eclipse Project Files .classpath .pro…

Python办公自动化案例:将Excel数据批量保存到Word表格中

案例:将excel数据批量保存到Word表格中 要将Excel数据批量保存到Word表格中,可以使用Python的openpyxl库来读取Excel文件,以及python-docx库来创建和编辑Word文档。以下是一段示例代码,以及代码解释和一些注意事项。 准备好的Excel数据: 1.安装所需库 首先,确保你已经…

Electron-vue asar 局部打包优化处理方案——绕开每次npm run build 超级慢的打包问题

背景 因为组员对于 Electron 打包过程存在比较迷糊的状态,且自己也没主动探索 Electron-vue 打包细节,导致每次打包过程都消耗 5-6 分钟的时间,在需要测试生产打包时,极其浪费时间,为此针对 Electron-vue 打包的几个环…

如何使用ssm实现学生考勤管理系统的设计与实现+vue

TOC ssm703学生考勤管理系统的设计与实现vue 绪论 课题背景 身处网络时代,随着网络系统体系发展的不断成熟和完善,人们的生活也随之发生了很大的变化。目前,人们在追求较高物质生活的同时,也在想着如何使自身的精神内涵得到提…

即插即用篇 | DenseNet卷土重来! YOLOv8 引入全新密集连接卷积网络 | ECCV 2024

本改进已同步到YOLO-Magic框架! 本文重新审视了密集连接卷积网络(DenseNets),并揭示了其在主流的ResNet风格架构中被低估的有效性。我们认为,由于未触及的训练方法和传统设计元素没有完全展现其能力,DenseNets的潜力被忽视了。我们的初步研究表明,通过连接实现的密集连接…

未能参加工博会的open61499

上海工博会正在如火如荼的进行中,各大工业板块的厂商都展示出了自家新的产品和解决方案,遗憾的是open61499没能到上海工博会亮相,只能通过写文章发自媒体的方式给大家介绍open61499。 open61499是基于IEC61499标准打造的工业编程平台&#xf…

Keil5安装arm和C51共存环境

一、安装前准备 ①Keil5 mdk安装包 ②Keil5 C51安装包 ③注册机 如下 二、安装步骤 ①建立两个文件夹用于存放Keil5 C51安装程序和keil5 mdk安装程序 如下图 ②点击c51v95a.exe进行安装,一路next,安装在Keil5_C51目录下 ③点击MDK539.ext进行安装…

Redis篇(环境搭建)

目录 一、安装包 1. Windows版下载地址 2. Linux版下载地址 二、安装Redis 1. 在Linux中安装Redis 2. 在Windows中安装Redis 3. 细节问题 三、Redis服务启动 1. 默认启动 2. 指定配置启动 3. 开机自启 四、Redis服务停止 1. Linux系统中启动和停止Redis 2. Window…

MongoDB 双活集群在运营商的实践

在现代电信行业中,订单中心作为核心业务系统之一,承担着处理客户订单、管理订单状态、与各个业务系统进行交互等重要职责。其订单中心的高效运作直接关系到客户体验和业务连续性。为了满足不断增长的业务需求和日益复杂的运营环境,运营商需要…

微调大模型(Finetuning Large Language Models)—Where finetuning fits in(二)

1.什么时候适合用finetune 微调(finetuning)对人的作用包括行为改变和知识获取。行为改变方面,包括学习更一致地回应、学会专注(如适度)以及发挥能力(如更擅长对话);知识获取方面&am…