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

NoSQL技术——Redis

简单介绍

Redis是当下最流行的NoSQL数据库。在Redis中,数据的存储格式是以键值对的方式进行存储的。在键值对的存储形式中,值除了是常见的字符串,也可以是类似于Json对象的形式,或者是List,Map等数组格式,或者是其他的复杂类型,所以键值对的存储方式也足够满足我们日常的使用:

像这种的,并不是以标准的表的格式存储的数据库,而是使用自身特定的数据结构进行存储的数据库叫做NoSQL的数据库。当然对于NoSQL的定义要更加的广泛,现在暂时就用存储结构将SQL和NoSQL数据库进行简单的区分即可。

认识NoSQL

SQL:关系型数据库

NoSQL:非关系型数据库,或者说,不仅仅是数据库

两者的区别

首先,SQL的S表示的是(Structured)结构化的意思,也就是说关系型数据库中的数据存储格式都是非常的规整的表的格式,并且我们还会加上一些约束让其中的数据更加的规范标准。

NoSQL的数据类型就相对比较松散,对于数据的存储并没有太强的约束,比如Redis的数据类型就是键值对的类型,其中键值的数据类型可以任意定义。或者对于ES这类的文档型,他们的数据存储格式就是JSON格式的存储方式。

除了数据的不同,当我们在定义SQL的表结构的时候,一般定义好了之后就不会轻易地修改表的结构,容易出现对应的业务无法正常实现的风险,或者数据发生错误,但是对于NoSQL来说,字段的数量可以随时的添加修改,我们只关注对应的字段,至于其他的字段是多了或者少了都对我们没有影响。

其次,SQL的第二个特点就是(Relational)关联,这个特性在之前我们学习MySQL时接触到的外键约束和多表查询,或者在做Java程序的时候学过的多对多关系中都有体验,比如我们用一个用户表,一个订单表,一开始这两张表并没有关系,但是当业务开始实现,一个用户购买了一个商品,这时候就会出现一张中间表去维护某个用户购买了某样商品,这时候表与表之间就开始有了关联,当我们再想去随意的操作关联表中的数据的时候,可能会因为某个表中的关联数据而导致无法正常的更改数据。

而对于NoSQL来说,他不会刻意的去维护表与表之间的关系,甚至对于数据与数据之间的关系都非常的模糊,如果想要将两个数据联系起来,一般的方式会选择嵌套,即在一个JSON对象中再加入一个JSON对象的方式去将多个对象进行联系。

然后就是查询方式的区别,SQL数据库的查询方式是使用SQL语言进行查询,但是对于NoSQL来说,查询语言并不是固定的,而是不同的 NoSQL数据库都有不同的查询方式,并没有一个统一的格式。各有各的好处,比如我们的SQL查询语言比较统一,基本上一套SQL语言可以在各种关系型数据库中使用,而非关系型数据库虽然不统一,但是查询的方式多半都比较符合程序员的编码方式,所以学习起来也并不是非常的困难。

还有就是事务方面的区别,所有的关系型数据库的事务,都满足ACID的特性,而非关系型数据库,并不能完美的实现事务,只能实现基本的事务的一致性。

除了以上这些大方向的差异,还有一个小的差异,比如SQL一般会将数据持久化到硬盘中,而非关系型数据库会将数据暂时存储在内存中,当触发持久化的操作的时候,才会真正的将数据落盘。以及在关系型数据库设计之初,就并没有为分布式做考虑,也就是说,当你需要提升数据库的性能的时候,只能不断地增加本机的性能,这种方式就是垂直扩展。但是NoSQL之所以现在发展的很快,就是因为它搭上了大数据的快车,大数据的对于数据的要求量非常的大,所以大数据的组件一开始的设计就是为了能够水平扩展,也就是由多台设备组成一个集群,从而协同运作提升效率,NoSQL的数据库也满足这一分布式的特性,从而和大数据一拍即合。

当然,根据不同的业务需求去选择不同的数据库也是非常重要的,所以了解了这些两者的不同点之后才能更好地发挥不同组件的作用。

相关文章:

NoSQL技术——Redis

简单介绍 Redis是当下最流行的NoSQL数据库。在Redis中,数据的存储格式是以键值对的方式进行存储的。在键值对的存储形式中,值除了是常见的字符串,也可以是类似于Json对象的形式,或者是List,Map等数组格式,…...

【探索SpringCloud】服务发现-Nacos服务端数据结构和模型

前言 上一文中,我们从官方的图示了解到Nacos的服务数据结构。但我关心的是,Nacos2.x不是重构了吗?怎么还是这种数据结构?我推测,必然是为了对Nacos1.x的兼容,实际存储应该不是这样的。于是,沿着…...

基于简单的信息变换实现自然语言模型

题目:基于简单的信息变换实现自然语言模型 摘要:在自然语言处理中,自然语言模型是至关重要的。本论文提出了一种基于简单的信息变换实现自然语言模型的方法。该方法将输入信息进行一系列的信息变换,如分割、属性、等效替换、增加删除等变换,与原始信息进行比较,得知信息是…...

低配版消息队列,redis——Stream

消息队列实现:群发效果 redis原有的消息队列数据不会持久化,所以它加了一个Stream数据结构。 添加数据:XADD s1(组名) *(*为自动生成) key val 取出数据: XREAD COUNT 1(取出个数) BLOCK 1(队列为空时等待时间0为一直等) STREA…...

【OpenCV入门】第五部分——图像运算

文章结构 掩模图像的加法运算图像的位运算按位与运算按位或运算按位取反运算按位异或运算图像位运算的运用 合并图像加权和覆盖 掩模 当计算机处理图像时,有些内容需要处理,有些内容不需要处理。能够覆盖原始图像,仅暴露原始图像“感兴趣区域…...

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom)

文章目录 前言参考目录版本说明Windows 部署 seata-server1:下载压缩包2:文件存储模式3:db 存储模式3.1:建表3.2:修改配置文件3.3:启动脚本4:源码部署 Docker 部署 seata-server (基…...

菜鸟教程第一天

1、Java变量类型 1.1 成员变量可以声明在使用前或者使用后。这句话怎么理解? 大家都知道,如果你在代码中使用这个变量,但是在此之前没有声明这个变量,是会报错的。如果是局部变量,在使用前,必须得声明并初…...

数据结构--5.2马踏棋盘算法(骑士周游问题)

题目渊源: 马踏棋盘问题(又称骑士周游问题或骑士漫游问题)是算法设计的经典问题之一。 题目要求: 国际象棋的棋盘为8*8的方格棋盘,现将“马”放在任意指定的方格中,按照“马”走棋的规则将“马”进行移动。…...

如何使用CSS实现一个响应式图片幻灯片(Responsive Image Slider)效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 响应式图片幻灯片⭐ HTML结构⭐ CSS样式⭐ JavaScript交互⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个…...

Linux学习之lvm删除

umount /mnt/logicvolumntest卸载挂载。 lvremove /dev/vgname/my_lv可以删除逻辑卷,其中vgname是指定逻辑卷所在的卷组名称,my_lv是逻辑卷的名称。 注意:使用lvremove命令会永久删除逻辑卷和其中的数据,因此请在使用之前进行适当…...

bazel介绍以及其发展历史

简介 Bazel Google开源的,是一款与 Make、Maven 和 Gradle 类似的开源构建和测试工具。 它使用人类可读的高级构建语言。Bazel 支持多种语言的项目,可为多个平台构建输出。Bazel支持任意大小的构建目标,并支持跨多个代码库和大量用户的大型代…...

固定资产管理分析怎么写?

对企业内的固定资产进行全面的统计和分析,包括设备、装修、维修等方面的信息,有助于企业进行资产管理和风险控制。  通过该软件,用户可以实现对资产的跟踪和管理,如实时监测设备的使用情况,提高设备利用率和维护效率…...

【项目源码】一套基于springboot+Uniapp框架开发的智慧医院3D人体导诊系统源码

智慧医院3D人体导诊系统源码 开发语言:java 开发工具:IDEA 前端框架:Uniapp 后端框架:springboot 数 据 库:mysql 移 动 端:微信小程序、H5 “智慧导诊”以人工智能手段为依托,为…...

可能的二分法 -- 二分图判定【DFS、BFS分别实现】

886. 可能的二分法 class PossibleBipartition:"""可能的二分法「其实考察的就是二分图的判定」用dfs和bfs 两种方法分别实现https://leetcode.cn/problems/possible-bipartition/"""def __init__(self):self.success Trueself.color []self.…...

六级翻译备考

classical 经典的 Chinese literature 中国文学 朝代dynasty 统治 rule 社会稳定 steady society 治理有序 orderly governance 伟大的greatest 时代 times或者periods 被人们描绘成人类历史上伴随着治理有序,社会稳定的最伟大的时代之一 more and more越来越多 …...

Vue框架--Vue中的数据绑定

Vue中有两种数据绑定的方式 1.单向数据绑定(v-band):数据只能够从data流向页面 2.双向数据绑定(v-model):数据不仅仅能够从data流向页面,也可以从页面流向data。 备注: 1.双向绑定一般都应用在表单类元素上。(如:input、select等有value属性值的标签上) 2.…...

Unity——热更新浅析

热更新的思想从本质上来讲,要考虑一些问题。例如,一个完整的游戏最多可以有多大比例的资源通过网络加载?能否让尽可能多的资源通过网络加载? 通过网络加载有很多好处,不仅可以极大减小安装包的体积,而且有…...

IMPLEMENT_DYNCREATE的分析

一、介绍 IMPLEMENT_DYNCREATE 是一个宏(macro),通常与DECLARE_DYNCREATE宏一起在MFC框架中使用。它的作用是为一个派生自 CObject 的MFC类提供运行时类型信息(RTTI)和对象的动态创建支持。 具体来说,IMP…...

Java实现根据短连接获取1688商品详情数据,1688淘口令接口,1688API接口封装方法

要通过1688的API获取商品详情数据,您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例,展示如何通过1688开放平台API获取商品详情属性数据接口: 首先,确保您已注册成为1688开放平台的开发者&#xf…...

ABAP FICO 凭证替代 凭证校验

凭证校验 1.T-CODE--->GGX2--->GBLR-->ZRGGBR000 2.将程序RGGBR000 复制为ZRGGBR000 3.GGB0--》财务会计--》凭证抬头或者行项目维护检验规则 4.OB28 维护特定的公司代码和调用点和确认,活动等级设置为1 5.GGB4-->激活校验 凭证替代 1.T-CODE--->GG…...

Transformer深度解析四:认知跃迁、交互建模与文明基底重构

【内容定位】未来畅想【文章日期】2026-03-31【场景引入】2026年3月的最后一天,我们站在一个看似稳固的技术高原上回望:Transformer架构已如同信息时代的“牛顿定律”,近乎完美地描述了语言宇宙中“符号”与“关系”的运动规律,并…...

终极指南:如何彻底解决Colab运行text-generation-webui的Matplotlib后端错误

终极指南:如何彻底解决Colab运行text-generation-webui的Matplotlib后端错误 【免费下载链接】text-generation-webui The original local LLM interface. Text, vision, tool-calling, training, and more. 100% offline. 项目地址: https://gitcode.com/GitHub_…...

告别GIL幻觉:基于subinterpreter+shared_memory的生产级无锁Pipeline(附GitHub星标1.2k的perf-validated模板库)

第一章:Python无锁GIL环境下的并发模型性能调优指南Python 的全局解释器锁(GIL)长期被视为 CPU 密集型并发的瓶颈,但现代 CPython 3.12 已实验性支持无 GIL 构建(通过 --without-pygil 配置选项)&#xff0…...

海淀AI,集体开弓:少年极客、中年创客与ICU归来者

田晏林 发自 凹非寺量子位 | 公众号 QbitAI春分之后的北京海淀,暖意至,万物生。人工智能产业的发展更是如火如荼。过去五天里,位于“宇宙中心”五道口的AI原点社区,30多场派对狂欢不停。这是在第三届中关村论坛“人工智能主题日”…...

效率倍增:用快马平台一键生成极客日报推荐的高效开发工具与脚本

最近在极客日报上看到不少提升开发效率的小技巧,比如用Prettier统一代码风格、配置Git Hooks自动化检查等等。但每次看完想实践时,总得花时间查文档、写配置,挺麻烦的。于是我用InsCode(快马)平台做了个工具生成器,能直接把日报里…...

告别重复造轮子:用快马ai一键生成arm7标准外设驱动,效率提升50%

作为一名嵌入式开发者,我经常需要和ARM7这类微控制器打交道。每次新项目启动,最头疼的就是那些重复性的外设驱动编写工作——尤其是定时器中断这种基础功能,虽然逻辑简单,但写起来特别耗时。最近发现InsCode(快马)平台的AI生成功能…...

中小企业SEO推广应该投入多少费用

<h2>中小企业SEO推广应该投入多少费用</h2> <p>在数字化时代&#xff0c;网络已经成为企业推广和销售的重要渠道之一。特别是对于中小企业来说&#xff0c;通过优化搜索引擎&#xff08;SEO&#xff09;来提升网站的自然流量&#xff0c;是非常有效且相对经济…...

CodeMaker:重新定义开发者效率的智能编码助手

CodeMaker&#xff1a;重新定义开发者效率的智能编码助手 【免费下载链接】CodeMaker A idea-plugin for Java/Scala, support custom code template. 项目地址: https://gitcode.com/gh_mirrors/co/CodeMaker 核心价值&#xff1a;告别重复编码&#xff0c;拥抱智能开发…...

Kimi-VL-A3B-Thinking效果展示:MMLongBench-Doc 35.1分超长文档理解

Kimi-VL-A3B-Thinking效果展示&#xff1a;MMLongBench-Doc 35.1分超长文档理解 1. 模型概述 Kimi-VL-A3B-Thinking是一款创新的开源混合专家&#xff08;MoE&#xff09;视觉语言模型&#xff0c;在多模态理解和长上下文处理方面展现出卓越能力。这个模型最引人注目的特点是…...

AXOrderBook:解密A股订单簿重建与FPGA硬件加速的深度技术方案

AXOrderBook&#xff1a;解密A股订单簿重建与FPGA硬件加速的深度技术方案 【免费下载链接】AXOrderBook A股订单簿工具&#xff0c;使用逐笔行情进行订单簿重建、千档快照发布、各档委托队列展示等&#xff0c;包括python模型和FPGA HLS实现。 项目地址: https://gitcode.com…...