数据库:Redis数据库

一、非关系型数据库

1.什么是非关系型数据库

非关系型数据库(Non-relational Database)又称NoSQL数据库是一种不同于传统关系型数据库管理系统(RDBMS)的数据存储解决方案。NoSQL这个术语最初意味着"Not Only SQL",强调的是这类数据库不完全依赖于SQL作为查询语言,并且通常不遵循关系模型的设计原则。

2.非关系型数据库的主要特征

非关系型数据库的主要特征包括:

数据模型多样性:

键值对存储(Key-Value Store):如Redis,通过键快速检索对应的值。

文档型数据库(Document-Oriented):如MongoDB,存储类似JSON或XML格式的文档集合,每个文档有自己的内部结构。

列族数据库(Column-Family):如Cassandra和HBase,以列簇为单位存储数据,适合大量数据的分布式存储和分析。

图形数据库(Graph Database):如Neo4J,关注实体间复杂关系的建模和查询。

灵活性:非关系型数据库允许更灵活的数据模型,能够轻松应对不断变化的应用需求,特别是在需要水平扩展时。

可扩展性与分布式计算:多数NoSQL数据库设计之初就考虑到横向扩展(Scale-out),可以在多个节点间分布数据和负载,从而处理海量数据和高并发请求。

弱一致性与CAP定理:很多NoSQL系统在设计上选择了可用性与分区容错性优先于强一致性,提供了最终一致性保证,而非传统RDBMS的ACID事务。

性能优化:某些非关系型数据库通过减少冗余、利用数据局部性以及针对特定场景优化数据结构和算法,提高了读写性能

3.关系型数据库和非关系型数据库区别

(1)数据存储方式不同

关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。
与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。

(2)扩展方式不同

SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。
要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多克服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限个表,这都需要通过提高计算机性能来。
而NoSQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。
关系:纵向   比如说硬件中添加内存
非关:横向  天然分布式

(3)对事务性的支持不同

如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。
虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。
 

二、Redis数据库

1.什么是Redis数据库

Redis(远程字典服务器) 是一个开源的、使用 C 语言编写的 NoSQL 数据库即非关系数据库。

Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。

Redis 6.0 中新增加的多线程也只是针对处理网络请求过程采用了多线性,而数据的读写命令,仍然是单线程处理的。

2、Redis命中机制和淘汰机制

命中机制:查询数据可以查询到,例如查询100条可以查询到20条即命中20条

淘汰机制:Redis缓存的是高热数据,若负载高于限制则淘汰一些最近没有访问的数据,即删除

2.数据模型与操作命令

Redis支持多种数据结构,这使得它能灵活地处理不同类型的数据和场景

键值对(Strings):简单的字符串类型,可以进行 GET、SET、INCR 等操作。

哈希表(Hashes):内含多个字段的键值对集合,例如存储用户信息。

列表(Lists):有序的字符串列表,可用于消息队列或者粉丝列表。

集合(Sets):无序且不允许重复元素的集合,常用于标签系统、好友列表等。

有序集合(Sorted Sets):具有排序特性的集合,每个成员有分数属性,可用于排行榜、带权重的索引等

3.Redis的优点

(1)具有极高的数据读写速度:数据读取的速度最高可达到 110000 次/s,数据写入速度最高可达到 81000 次/s。
(2)支持丰富的数据类型:支持 key-value、Strings、Lists、Hashes、Sets 及 Sorted Sets 等数据类型操作。
(3)支持数据的持久化:可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
(4)原子性:Redis 所有操作都是原子性的。
(5)支持数据备份:即 master-salve 模式的数据备份。

4.安装部署Redis

安装环境和Redis并解压

[root@localhost ~]#yum install -y gcc gcc-c++ make
#安装编译环境
[root@localhost opt]#ls /opt
redis-5.0.7.tar.gz
[root@localhost opt]#tar zxvf redis-5.0.7.tar.gz -C /opt/
#解压源码包
[root@localhost opt]#ls
redis-5.0.7  redis-5.0.7.tar.gz
[root@localhost opt]#cd  /opt/redis-5.0.7/
[root@localhost redis-5.0.7]#ls
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-moduleapi  src
BUGS             deps     MANIFESTO  runtest          runtest-sentinel   tests
CONTRIBUTING     INSTALL  README.md  runtest-cluster  sentinel.conf      utils
#因为源码包中自带Makefile文件,所以不需要执行configure命令,直接执行make命令即可
[root@localhost redis-5.0.7]#make  -j 4
#进行编译
[root@localhost redis-5.0.7]#make PREFIX=/usr/local/redis  install
#安装redis

执行软件包提供的 install_server.sh 脚本文件设置 Redis 服务所需要的相关配置文件
首先切入/opt/redis-5.0.7/utils

然后脚本设置文件

Selected config:
Port           : 6379								#默认侦听端口为6379
Config file    : /etc/redis/6379.conf				#配置文件路径
Log file       : /var/log/redis_6379.log			#日志文件路径
Data dir       : /var/lib/redis/6379				#数据文件路径
Executable     : /usr/local/redis/bin/redis-server	#可执行文件路径
Cli Executable : /usr/local/bin/redis-cli			#客户端命令工具

设置软连接把redis的可执行程序文件放入路径环境变量的目录中便于系统识别

ln -s /usr/local/redis/bin/* /usr/local/bin/

如果需要修改redis服务的配置,部分配置还需要修改启动文件,例如端口号与PID文件路径

修改配置 /etc/redis/6379.conf 参数

修改配置 /etc/redis/6379.conf 参数
vim /etc/redis/6379.conf
bind 127.0.0.1 192.168.10.23				#70行,添加 监听的主机地址
port 6379									#93行,Redis默认的监听端口
daemonize yes								#137行,启用守护进程
pidfile /var/run/redis_6379.pid				#159行,指定 PID 文件
loglevel notice								#167行,日志级别
logfile /var/log/redis_6379.log				#172行,指定日志文件

查看端口发

总结

非关系数据
数据保存在缓存中,利于读取速度/查询数据
架构位置灵活
分布式、扩展性高

关系型数据库
安全性高(持久化)
事务处理能力强
任务控制强
可以做日志备份、 恢复容灾(能力更强一些

数据存储流向

非关系数据库

实列--》数据库--》集合---》键值对

非关系数据库不需要建数据库和集合(表)

关系型数据库

实列--》数据库--》表--》记录行---》存储到存储数据

redis 是一个关系型数据库 是一个开源基于内存上运行并且支持持久化,采用键值对(key-value),分布式集群架构

redis 有点 以及为什么这么快

  • 读写速度快
  • 支持丰富的数据类型
  • 支持数据的持久化
  • 操作方式原子性
  • 支持数据备份 master-slave

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

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

相关文章

静态资源不加载是否会影响性能吗

静态资源不加载或加载缓慢确实可能会影响网站或应用的性能。静态资源,如CSS、JavaScript、图片等,是网页的重要组成部分,它们负责网页的样式、交互和视觉效果。 如果静态资源不加载或加载失败,用户可能会看到一个没有样式或交互的…

1999-2022年上市公司员工人数数据

1999-2022年上市公司员工人数数据 1、时间:1999-2022年 2、指标:证券代码、时间、员工人数 3、来源:整理自csmar 4、范围:上市公司 5、指标解释: 上市公司员工人数是衡量公司规模和发展状的重要指标。该数据直接…

阿赵UE学习笔记——24、动画播放控制

阿赵UE学习笔记目录   大家好,我是阿赵。   继续学习虚幻引擎的使用。关于UE的动画系统,之前学习了很多,包括动画合成或者动画蒙太奇等,实际上最后得到的都是一个动画片段。那么这些动画片段,是需要怎样播放控制呢…

babyAGI(6)-babyCoder源码阅读2任务描述部分

废话不多说,我们直接看task的prompt 这里需要注意的是,每个openai_call的temperature都不相同,这也是开发程序时需要调整和关注的一点 1. 初始化代码任务agent 作为babycoder的第一个angent,整个prompt编写的十分值得学习 整个p…

Taro多行文本最多展示5行,超出“查看更多”展示,点击弹层

Taro中,页面需求: 多行文本,展示最多展示5行,超出5行,展示“查看更多”按钮,点击弹层展示文本详细信息。 弹层代码就不说了,着重说一下怎么获取区域高度~ 1.区域设置max-height&am…

ArcGIS Pro打不开Excel?Microsoft驱动程序安装不上?

刚用ArcGIS pro的朋友们可能经常在打开xls或者xlsx文件的时候都会提示,未安装所需的Microsoft驱动程序。 怎么办呢?当然,按照提示装一下驱动就会好吗?有什么状况会出现?有什么临时替代方案呢? 全文目录&a…

为什么要选择第三方软件测试机构?CMA、CNAS第三方软件测试机构推荐

第三方软件测试机构是独立于软件开发方和软件使用方的中立机构,致力于对软件产品进行全面、客观、专业的测试和评估,为软件开发方和使用方提供全面的技术支持和服务。 一、为什么要选择第三方软件测试机构   1、专业性强:拥有专业的测试团…

程序员的认知风格与思维特点

1 程序员的认知风格与思维特点 程序员的认知风格与思维特点,是他们在编程过程中展现出来的独特 目录 1 程序员的认知风格与思维特点 1.1 逻辑思维与抽象思维能力 1.2 空间思维与模式识别能力 1.3 系统思维与问题分解能力 1.4 案例与数据 1.5 总结 2 逻辑思…

实验4-10:判断IP地址的有效性

实验4-10:判断IP地址的有效性 输入一个IPv4格式的IP地址,判断地址的有效性。 IPv4格式的地址由4组十进制数构成,数据由句点间隔,每组数据的范围介于0~255之间。 例如: 202.118.11.24 为有效IP地址, 而 202…

QT实现windows下获取CPU、内存及磁盘信息

一.目的 QT代码实现windows下获取CPU、内存及磁盘信息。 二.代码实现 1.获取CPU和内存信息 #include <Windows.h> // 获取CPU信息 SYSTEM_INFO systemInfo; GetSystemInfo(&systemInfo); qDebug() << "CPU Architecture:" << (systemInfo.wP…

基本电路理论-电流和电压的参考方向

&#x1f308;个人主页&#xff1a;会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 电流及参考方向 电流&#xff1a;带电粒子有规则的定向移动 电流强度&#xff1a;单位时间内通过导体横截面的电荷量&#xff0c;即&#xff1a;idq/dt 单位&#xff1a…

Vue3_2024_7天【回顾上篇watch常见的后两种场景】完

随笔&#xff1a;这年头工作不好找咯&#xff0c;大家有学历提升的赶快了&#xff0c;还有外出人多注意身体&#xff0c;没错我在深圳这边阳了&#xff0c;真的绝啊&#xff0c;最尴尬的还给朋友传染了&#xff01;&#xff01;&#xff01; 之前三种的监听情况&#xff0c;监听…

C# 委托与事件 终章

C# 委托与事件 浅尝 C# 委托与事件 深入 委托 委托有什么用&#xff1f; 将函数作为函数的参数传递声明事件并用来注册 强类型委托 Action<T1> Func<T1, TResult>事件 希望一个类的某些成员在发生变化时能被外界观测到 CollctionChangedTextChanged 标准.Ne…

【Qt 学习笔记】Qt 背景介绍

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt 背景介绍 文章编号&#xff1a;Qt 学习笔记 / 01 文章目录 Qt 背景…

CSS面试题---基础

1、css选择器及优先级 选择器优先级&#xff1a;内联样式>id选择器>类选择器、属性选择器、伪类选择器>标签选择器、微元素选择器 注意&#xff1a; !important优先级最高&#xff1b; 如果优先级相同&#xff0c;则最后出现的样式生效&#xff1b; 继承得到的样式优先…

Vue3 组合式函数Composables

简介 “组合式函数”(Composables) 是一个利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数。 我们可以把一些可以复用的逻辑封装成组合式函数放到js文件中&#xff0c;在vue文件中通过import来使用这些逻辑&#xff0c;使vue文件更瘦&#xff0c;逻辑更清晰。 一个小栗子…

.[nicetomeetyou@onionmail.org].faust勒索病毒数据怎么处理|数据解密恢复

引言&#xff1a; 在数字化日益普及的今天&#xff0c;网络安全问题已成为人们不可忽视的挑战。其中&#xff0c;勒索病毒作为一种极具破坏性的恶意软件&#xff0c;已多次在全球范围内制造了重大危机。其中&#xff0c;名为.[nicetomeetyouonionmail.org].faust、[support202…

Sora可能会改变我们的思维方式

当经济学家评估生成式人工智能对人类工作的影响时&#xff0c;教育家也有自己的担忧&#xff0c;毕竟在写作、答疑等领域&#xff0c;AI所展现的能力已经令许多人类望尘莫及&#xff0c;学者们可能有这样的思考&#xff1a;散文是否会继续主导人类的交流和论证。 社交媒体和新闻…

基于Scala开发Spark ML的ALS推荐模型实战

推荐系统&#xff0c;广泛应用到电商&#xff0c;营销行业。本文通过Scala&#xff0c;开发Spark ML的ALS算法训练推荐模型&#xff0c;用于电影评分预测推荐。 算法简介 ALS算法是Spark ML中实现协同过滤的矩阵分解方法。 ALS&#xff0c;即交替最小二乘法&#xff08;Alte…

2024年最新github之Go语言开源项目top50排行榜项目

如果有帮助到您还请动动手帮忙点赞&#xff0c;关注&#xff0c;评论转发&#xff0c;感谢啦&#xff01;&#x1f495;&#x1f495;&#x1f495;&#x1f618;&#x1f618;&#x1f618; 本文由Butterfly一键发布工具发布 2024年最新github之Go语言开源项目top50排行榜项目…