Linux--Redis 群集

news/2024/4/19 15:05:34/文章来源:https://blog.csdn.net/2301_77023501/article/details/136373546

9.1.1 关系型数据库非关系型数据库

      数据库按照其结构可以分为关系型数据库与其他数据库,而这些其他数据库我们将其统称为非 关系型数据库。Redis数据库是一个非关系型数据库

1、关系型数据库

       关系型数据库是一个结构化的数据库,创建在关系模型基础上,一般面向记录。它借助于集合 代数等數学概念和方法来处理数据库中的数据。关系模型指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。现实世界中,各种实体与实体之间的各种联系都可以用关系模型来表示。SQL (Structured Query Language,结构化查询语言)语句就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。

       主流的关系型数据库包括Oracle、MySQL、SQL Server、 Microsoft Access、DB2等。

2、非关系型数据库

        NoSQL(NoSQL = Not Only SQL),意思是“不仅仅是SQL”,是非关系型数据库的总称。主流的NoSQL数据库有Redis、MongBD、Hbase、CouhDB等。以上这些数据库,它们的存储方式、存储结构以及使用的场景都是完全不同的。所以我们认为它是一个非关系型数据库的集合,而不是像关系型数据库一样,是一个统称。换言之,主流的关系型数据库以外的数据库,都是非关系型的。NoSQL 数据库凭借着其非关系型、分布式、开源和横向扩展等优势,被认为是下一代数据库产品。

9.1.2 Redis基础

1. Redis简介

      Redis 是一个开源的,使用C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value (键值对)数据库,是目前分布式架构中不可或缺的一环。

       Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,而Redis 的实际处理速度则完全依靠于主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力会有一定程度的下降,若在同一台服务器上开启多个Redis进程, Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。也就是说,在实际生产环境中。 需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台 服务器上开启多个进程:若CPU资源比较紧张,采用单进程即可。

Redis具有一下几个优点。

> 具有极高的数据读写速度。

> 支持丰富的数据类型。

> 支持数据的持久化。

> 原子性。

> 支持数据备份。

部署配置实验

实验环境

虚拟机 6台 centos7.9

网卡NAT模式 数量 1

组件包Redis安装包

设备

IP

备注

Centos01

192.168.161.111

Node1

Centos02

192.168.161.112

Node2

Centos03

192.168.161.113

Node3

Centos04

192.168.161.114

Node4

Centos05

192.168.161.115

Node5

Centos06

192.168.161.116

Node6

初始配置

关闭防火墙关闭Selinux

Systemctl disable firewalld --now

关闭Selinux

setenforce 0
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

配置IP DNS 网关

nmtui

上传Redis安装包

安装组件(1~6台可同时操作)

[root@node1 ~]# yum -y install gcc vim net-tools

解压到/usr/src/ 目录下

[root@node1 ~]# tar zxf redis-7.2.4.tar.gz -C /usr/src/

进入解压目录进行编译安装

[root@node1 ~]# cd /usr/src/redis-7.2.4/
[root@node1 redis-7.2.4]# make && make install

Redis操作命令关联系统

[root@node1 redis-7.2.4]# mkdir cluster
[root@node1 redis-7.2.4]# mkdir cluster/6001
[root@node1 redis-7.2.4]# cp redis.conf cluster/6001[root@node1 redis-7.2.4]# mkdir cluster/6002
[root@node1 redis-7.2.4]# cp redis.conf cluster/6002[root@node1 redis-7.2.4]# mkdir cluster/6003
[root@node1 redis-7.2.4]# cp redis.conf cluster/6003[root@node1 redis-7.2.4]# mkdir cluster/6004
[root@node1 redis-7.2.4]# cp redis.conf cluster/6004[root@node1 redis-7.2.4]# mkdir cluster/6005
[root@node1 redis-7.2.4]# cp redis.conf cluster/6005[root@node1 redis-7.2.4]# mkdir cluster/6006
[root@node1 redis-7.2.4]# cp redis.conf cluster/6006

 分别修改,1~6台可同时操作 (每台主机的需要修改cluster/6001/redis.conf ~ cluster/6006/redis.conf)

[root@node1 redis-7.2.4]# vim cluster/6001/redis.conf bind 192.168.160.51                  //将 127.0.0.1 修改对应节点IP
protected-mode no			         //将 yes 修改no关闭保护功能
port 6001					         //将 6379 端口修改对应目录的
daemonize yes				         //将 no 修改 yes 开启守护进程
cluster-enabled yes			         //将 # 删除 开启群集功能
cluster-config-file nodes-6379.conf  //将 # 删除 开启群集配置文件
cluster-node-timeout 15000		     //将 # 删除 开启群集节点超时

将群集目录 cluster 复制到其它节点(如远端没有同时操作以上步骤,可从本机复制过去)

[root@node1 redis-7.2.4]# tar zcf cluster-dir.tar.gz cluster[root@node1 redis-7.2.4]# scp cluster-dir.tar.gz root@192.168.161.112:/usr/src/redis-7.2该ip为远端ip
[root@node2 redis-7.2.4]# tar zxf cluster-dir.tar.gz //在node2解包

每个节点 启动redis服务 不同节点变换目录 cluster/6002/redis.conf (不可6台同时操作共同启动)

[root@node1 redis-7.2.4]# redis-server cluster/6001/redis.conf [root@node1 redis-7.2.4]# ps -aux  //查看进程

使用脚本创建群集 仅在 node1 操作

[root@node1 redis-7.2.4]# yum -y install ruby ruby-devel rpm-build
[root@node1 redis-7.2.4]# redis-cli --cluster create 192.168.161.111:6001 192.168.161.112:6002 192.168.161.113:6003 192.168.161.114:6004 192.168.161.115:6005 192.168.161.116:6006 --cluster-replicas 1  //创建群集

[root@node1 redis-7.2.4]# redis-cli -h 192.168.161.111 -p 6001 -c //连接本机上的 Redis 数据库(可连接本机也可连接远端主机数据库)或[root@node1 redis-7.2.4]# redis-cli (仅连接本机)
192.168.161.111:6001> CLUSTER SLOTS

测试,在node1创建aa

192.168.161.111:6001> set aa bt135192.168.161.111:6001> get aa

在node2中查找在node1中创建的aa

[root@node2 redis-7.2.4]# redis-cli -h 192.168.161.112 -p 6002 -c192.168.161.112:6002> get aa

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

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

相关文章

Seata 2.x 系列【2】数据库事务

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Seata 版本 2.0.0 源码地址:https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. ACID 模型2.1 原子性2.2 一致性2.3 隔离性2…

ChatGPT如何干涉教育?

OpenAI又整大活儿了。 他们在ChatGPT引入了自定义指令,什么是自定义指令呢,我截图了他们在推特上发布的解释,比较让人期待的是,现在ChatGPT能够更好地为小说和编剧们服务了,以及,它可以模仿你的语言风格&a…

element-ui radio 组件源码分享

今日简单分享 radio 组件的实现原理,主要从以下三个方面来分享: 1、radio 页面结构 2、radio 组件属性 3、radio 组件方法 一、radio 页面结构 1.1 页面结构如下: 二、radio 属性 2.1 value / v-model 属性,类型为 string / …

【C++】C/C++内存管理详解

个人主页 : zxctscl 文章封面来自:艺术家–贤海林 如有转载请先通知 目录 1. 前言2. C/C内存分布3. C语言中动态内存管理方式4. C中动态内存管理4.1 new/delete操作内置类型4.2 new和delete操作自定义类型 5. operator new与operator delete函数5.1 oper…

Claude3、Gemini、Sora VS GPT-4:AI技术如何助力科研与产业发展?

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚…

社区店选址评估:利用大数据选址的技巧与策略

在当今数字化的时代,利用大数据进行社区店选址评估已成为一种高效、科学的方法。作为一名开鲜奶吧5年的创业者,我将分享一些利用大数据选址的技巧与策略,帮助你找到最适合的店铺位置。 1、确定目标商圈 在选址之前,首先要明确自己…

C++初阶:初识C++

目录 1. 前言:C 与 C语言2. C对于C语言语法的完善与补充2.1 命名冲突与命名空间2.1.1 命名空间的定义2.1.2 调用方式 2.3 补充:流的概念2.4 缺省参数2.4.1 缺省参数的使用 2.5 函数重载2.5.1 什么是函数重载2.5.2 函数重载的使用2.5.3 特殊情况&#xff…

SpringBoot 热部署。

SpringBoot 热部署。 文章目录 SpringBoot 热部署。 pom.xml。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional…

Android 12.0 系统wifi列表显示已连接但无法访问网络问题解决

1.前言 在12.0的系统rom产品定制化开发中,在wifi模块也很重要,但是在某些情况下对于一些wifi连接成功后,确显示已连接成功,但是无法访问互联网 的情况,所以实际上这时可以正常上网的,就是显示的不正常,所以就需要分析连接流程然后解决问题 如图所示: 2.系统wifi列表显示…

IEEE 802.11 RTS/CTS/BA/Management

RTS/CTS IEEE 802.11 RTS/CTS即RTS/CTS协议(Request To Send/Clear To Send)即请求发送/清除发送协议是被802.11无线网络协议采用的一种用来减少由隐藏节点问题所造成的冲突的机制。 相当于一种握手协议,主要用来解决"隐藏终端"问题。"隐藏终端"(Hid…

HTML静态网页成品作业(HTML+CSS)——舞蹈网页设计制作(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码CSS部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有5个页面。 &#x1…

javaWebssh在线授课辅导系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh在线授课辅导系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。开发环境为TOMCAT7.…

用户角色的重要性:确保财务数据安全的最佳方式

在企业的财务管理业务中&#xff0c;一个人几乎不可能完成所有的财务记账任务&#xff0c;例如设定预算、发票审批等等&#xff0c;至少不能有效地执行。最为明智的方式&#xff0c;是将这些任务分派给特定的人员&#xff0c;比如部门经理、财务经理或者销售、市场人员等等。 但…

设计模式(二)单例模式

单例模式&#xff1a;确保一个类只有一个实例&#xff0c;并提供了全局访问点&#xff1b;主要是用于控制共享资源的访问&#xff1b; 单例模式的实现分为懒汉式和饿汉式。 懒汉式单例在需要时才会创建&#xff0c;而饿汉式单例则在类加载时立即创建实例&#xff1b; 单例模…

【airtest】自动化入门教程(二)airtest操作

目录 一、touch 二、wait 三、swipe 四、exists 五、text 六、keyevent 七、snapshot 八、sleep 九、断言 9.1 assert_exists 9.2 assert_not_exists 9.3 assert_equal 9.4 assert_not_equal 前言&#xff1a;本文主要针对aritest部分的基础操作,aritest是一个跨平…

Selenium上传文件有多少种方式?不信你有我全

Selenium 封装了现成的文件上传操作。但是随着现代前端框架的发展&#xff0c;文件上传的方式越来越多样。而有一些文件上传的控件&#xff0c;要做自动化控制会更复杂一些&#xff0c;这篇文章主要讨论在复杂情况下&#xff0c;如何通过自动化完成文件上传 1.input 元素上传文…

前端从普通登录到单点登录(SSO)

随着前端登录场景的日益复杂化和技术思想的不断演进&#xff0c;前端在登录方面的知识结构变得越来越复杂。对于前端开发者来说&#xff0c;在日常工作中根据不同的登录场景提供合适的解决方案是我们的职责所在&#xff0c;本文将梳理前端登录的演变过程。 1、无状态的HTTP H…

蜘蛛池是什么意思,怎么生成蜘蛛池

蜘蛛池是由自然界中的蜘蛛群落构成的一个小生态系统&#xff0c;也是身处自然界中的游客们可以在风雨中体验到最贴近自然气息的地方。 点开我主页面 Baidu蜘蛛的作用&#xff1a; 引蜘蛛逐渐收录&#xff0c;降权引蜘蛛可以疗伤&#xff0c;排名/收录不稳定&#xff0c;没有收…

Transformer中的FeedForward

Transformer中的FeedForward flyfish class PoswiseFeedForwardNet(nn.Module):def __init__(self, d_ff2048):super(PoswiseFeedForwardNet, self).__init__()# 定义一维卷积层 1&#xff0c;用于将输入映射到更高维度self.conv1 nn.Conv1d(in_channelsd_embedding, out_ch…

3.7作业

一 1&#xff09;应用层 负责处理不同应用程序之间的通信&#xff0c;需要满足提供的协议&#xff0c;确保数据发送方和接收方的正确 应用层提供的协议&#xff1a; &#xff08;2&#xff09;表示层 负责网络中通信的数据的编码和格式&#xff0c;确保通信过程中…