企业级Nosql数据库和Redis集群

devtools/2025/1/7 23:48:51/

一、关系数据库和Nosql数据库

      关系数据库

  • 定义:关系数据库是建立在关系模型基础上的数据库。它使用表格(关系)来存储数据,通过行和列的形式组织信息。例如,一个简单的学生信息表可能有 “学号”“姓名”“年龄”“班级” 等列,每一行代表一个学生的具体信息。
  • NoSQL 数据库
  • 定义:NoSQL(Not Only SQL)数据库是一种非关系型数据库,它不依赖于传统的关系模型和 SQL 语言来处理数据。NoSQL 数据库主要用于处理大规模、高并发、分布式的数据存储和访问需求。
比较项目关系数据库NoSQL 数据库
数据模型以表格形式组织数据,通过行和列存储,有主键和外键来维护关系多种模型,包括键 - 值存储、文档存储、列族存储、图形存储等
数据操作语言使用 SQL 进行数据定义、查询、更新和删除操作没有统一标准语言,不同类型的 NoSQL 数据库有各自的查询语言,如 MongoDB 的类似 JSON 的语法、Neo4j 的 Cypher 语言等
数据一致性通过事务处理机制保证强一致性,严格的事务保证一组操作要么全部成功要么全部失败部分 NoSQL 数据库为了高可用性和高性能可能会牺牲一定的数据一致性,数据更新可能不会立即在所有节点同步
数据完整性有成熟的完整性约束,如主键约束、外键约束、非空约束等确保数据质量完整性约束相对较弱,不过部分数据库也有自己的验证机制
扩展性在处理大规模、高并发数据时可能出现性能瓶颈,扩展相对复杂具有高可扩展性,能通过添加服务器节点轻松扩展存储和处理能力,适合处理海量数据
性能和并发在复杂查询和关联操作方面有优势,但在高并发读写场景下可能性能下降高性能和高并发,简单的数据结构(如键 - 值存储)能快速处理读写操作,适用于缓存等场景
数据灵活性数据模型相对固定,对于复杂的非结构化数据处理较困难灵活的数据模型,能适应结构化、半结构化和非结构化数据,如文档存储可灵活处理各种内容
技术成熟度有大量成熟的数据库管理系统,如 Oracle、MySQL、SQL Server 等,工具支持丰富技术不断发展,部分 NoSQL 数据库相对较新,生态系统和工具支持在不断完善中
典型应用场景适合数据一致性要求高、事务处理频繁的系统,如银行系统、企业资源规划(ERP)系统适合大数据、高并发、分布式存储场景,如物联网系统、社交媒体平台、缓存系统等

二、Remote Dictionary Server

1.什么是redis

Redis(Remote Dictionary Server)是一个开源的、高性能的键 - 值(key - value)存储数据库,通常被归类为 NoSQL 数据库

2.redis特性

  • 速度极快:Redis 将数据存储在内存中,内存的读写速度比磁盘快得多。这使得 Redis 能够在极短的时间内处理大量的读写请求。例如,在一个高并发的电商系统中,Redis 可以快速地查询商品库存信息,响应时间可以达到亚毫秒级。
  • 单线程架构(主要部分):Redis 的核心部分是单线程的,这避免了多线程的上下文切换成本。它通过高效的事件循环(I/O 多路复用)机制来处理多个客户端的请求。例如,即使有数千个客户端同时向 Redis 发送请求,它也能高效地处理,不会因为线程切换而导致性能下,

3.应用场景 

  • 缓存:这是 Redis 最常见的应用场景之一。可以将经常访问的数据(如数据库查询结果、网页内容等)存储在 Redis 中。当客户端再次请求相同的数据时,直接从 Redis 中获取,而不是从较慢的数据源(如数据库或文件系统)中获取,大大提高了系统的响应速度。例如,一个新闻网站可以将热门新闻文章的内容缓存到 Redis 中。
  • 消息队列:利用 Redis 的列表(List)数据结构可以实现简单的消息队列。生产者将消息添加到列表的一端,消费者从列表的另一端取出消息进行处理。例如,在一个分布式系统中,不同模块之间的异步通信可以通过 Redis 消息队列来实现。
  • 计数器:可以使用 Redis 的原子操作来实现计数器功能。例如,统计网站的访问次数、文章的点赞数等。由于 Redis 的操作是原子性的,所以在高并发环境下也能保证计数的准确性。
  • 排行榜:通过有序集合(Sorted Set)可以轻松地实现排行榜功能。例如,游戏中的玩家分数排行榜、电商平台的商品销量排行榜等,能够快速地更新排名并查询排名信息。

三、Redis安装

3.1 rpm包安装

dnf install redis -y

3.2源码安装

安装编译工具

执行编译命令

启动redis

编辑配置文件

 

其他主机安装

 

四、redis的主从复制

4.1 环境配置

R2   master

R1   slave

R3   slave

4.2 配置主从同步

1.修改master节点的配置文件

2.配置slave节点

3.测试

master

slave

五、redis哨兵

5.1什么是 Redis 哨兵(Sentinel)

  • Redis 哨兵是 Redis 高可用性(HA)解决方案的一个重要组件。它主要用于监控 Redis 主从节点的状态,在主节点出现故障时自动进行故障转移,将从节点提升为新的主节点,从而保证 Redis 服务的持续可用性。

5.2工作原理

  • 监控(Monitoring)
    • 哨兵会定期(默认每 1 秒)向 Redis 主节点、从节点发送心跳(PING)命令,来检查它们是否正常运行。如果在配置的时间范围内(如 down - after - milliseconds 参数指定的时间)没有收到节点的有效响应,就会将该节点标记为 “主观下线(Subjectively Down,SDOWN)”。
  • 通知(Notification)
    • 当一个哨兵将某个节点标记为 SDOWN 后,它会向其他哨兵发送消息,告知该节点可能出现故障。当多个(根据配置的 quorum 参数,例如多数派)哨兵都认为一个主节点下线时,这个主节点就会被标记为 “客观下线(Objectively Down,ODOWN)”。
  • 故障转移(Failover)
    • 一旦主节点被标记为 ODOWN,哨兵们就会协商选举出一个哨兵来执行故障转移操作。这个当选的哨兵会从存活的从节点中选择一个合适的节点,将其提升为新的主节点。然后它会通知其他从节点,让它们成为新主节点的从节点,并且更新相关的配置。
  • 配置提供者(Configuration Provider)
    • 哨兵会自动发现 Redis 的主从节点,并维护一个关于它们的配置信息列表。客户端可以连接到哨兵来获取当前 Redis 主节点的地址等配置信息,这样客户端就不需要手动维护主节点的信息,并且在主节点发生故障转移后,能够自动更新连接的主节点

5.3哨兵实验过程 

master节点

slave

启动

六、Redis Cluster

6.1部署redis cluster

在所有主机中

yum install redis -y

vim /etc/redis/redis.conf

6.2创建redis-cluster

测试

写动作到了第二个master里面

120主机可以写

6.3集群扩容

现在是三组三从

将124添加到120的集群中

但没槽位不能存数据

分享槽位

添加slave

6.4删除主机

1。

2。


http://www.ppmy.cn/devtools/148318.html

相关文章

学习Video.js

查阅官方文档&#xff0c;学习video.js相关属性、回调与方法&#xff1a; 播放器选项设置 ①标准的video标签属性 <video controls autoplay preload"auto" ...> ②data-setup属性传递JSON <video data-setup{"controls": true, "autop…

书生大模型入门第二节

任务类型任务内容预计耗时闯关任务Leetcode 383(笔记中提交代码与leetcode提交通过截图)20mins闯关任务Vscode连接InternStudio debug笔记10mins可选任务pip安装到指定目录 10mins 1.Leetcode 383题目 首先通过python语言进行统计两个字符串的相同字符的个数&#xff0c;然后…

spring中常见的自动注入方式

在Spring框架中&#xff0c;自动注入&#xff08;Autowiring&#xff09;是依赖注入&#xff08;Dependency Injection, DI&#xff09;的一种形式&#xff0c;它允许Spring容器自动解析并装配协作对象之间的依赖关系。Spring提供了多种自动注入的方式&#xff0c;下面是几种最…

Hypium纯血鸿蒙系统 HarmonyOS NEXT自动化测试框架

1、什么是Hypium Hypium是华为官方为鸿蒙操作系统开发的一款以python为语言的自动化测试框架。 引用华为官网介绍如下&#xff1a; DevEco Testing Hypium(以下简称Hypium)是HarmonyOS平台的UI自动化测试框架&#xff0c;支持开发者使用python语言为应用编写UI自动化测试脚本…

【2024年-12月-18日-开源社区openEuler实践记录】openeuler - jenkins:开源项目持续集成与交付的幕后引擎

开篇介绍 大家好&#xff0c;我是 fzr123&#xff0c;热衷于挖掘那些能为开源项目高效运转“添柴加薪”的关键工具&#xff0c;今天要带大家全面剖析openeuler - jenkins。在开源生态蓬勃发展&#xff0c;项目迭代速度不断加快的当下&#xff0c;它宛如一位不知疲倦的“幕后工…

使用Clion在ubuntu上进行交叉编译,并在Linux上远程编译五子棋

目录 1.工具以及概念介绍 &#xff08;1&#xff09;Clion软件简介 &#xff08;2&#xff09;交叉编译 &#xff08;3&#xff09;远程编译 2.操作原理 3.详细操作步骤 &#xff08;1&#xff09;配置Clion与虚拟机ubuntu的ssh连接 CLion远程开发Ubuntu&#xff0c;并显…

vscode如何离线安装插件

在没有网络的时候,如果要安装插件,就会麻烦一些,需要通过离线安装的方式进行。下面记录如何在vscode离线安装插件。 一、下载离线插件 在一台能联网的电脑中,下载好离线插件,拷贝到无法联网的电脑上。等待安装。 vscode插件商店地址:https://marketplace.visualstudio.co…

Nginx——服务器端集群搭建与扩展模块(五/五)

目录 1.Nginx实现服务器端集群搭建1.1.Nginx 与 Tomcat 部署1.1.1.环境准备 (Tomcat)1.1.2.环境准备 (Nginx) 1.2.Nginx实现动静分离1.2.1.概述1.2.2.需求分析1.2.3.动静分离实现步骤 1.3.Nginx 实现 Tomcat 集群搭建1.4.Nginx 高可用解决方案1.4.1.概述1.4.2.Keepalived 介绍1…