Redis 群集

简介

        在现在的互联网大潮中,NoSQL可谓家喻户晓,Redis作为NoSOL大军中极其重要的一员,是我们走向架构道路的一条必经之路。

Redis介绍

        Redis 数据库是一个非关系型数据库,在正式学习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数据库凭借着其非关系型、分布式、开源和横向扩展等优势,被认为是下一代数据库产品。

二、Redis基础

1.Redis简介

        Redis 是一个开源的,使用C语言编写,支持网络、可基于内存亦可持久化的日志型、key-value(键值对)数据库,是目前分布式架构中不可或缺的一环。
        Redis 服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,而Redis的实际处理速度则完全依靠于主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。也就是说,在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程:若CPU资源比较紧张,采用单进程即可。

Redis 具有以下几个优点。

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

        Redis作为基于内存运行的数据库,缓存是其较常应用的场景之一,除此之外,Redis常见应用场景还包括获取最新N个数据的操作,排行榜类应用、计数器应用、存储关系,实时分析系统、日
志记录等。

三、部署Redis

实验环境:虚拟机 6台 centos7.9、网卡NAT模式 数量 1、组件包Redis安装包

设备

IP

备注

Centos01

192.168.19.10

Node1

Centos02

192.168.19.20

Node2

Centos03

192.168.19.30

Node3

Centos04

192.168.19.40

Node4

Centos05

192.168.19.50

Node5

Centos06

192.168.19.60

Node6

初始配置

关闭防火墙
[root@love ~]# systemctl disable firewalld --now关闭Selinux
setenforce 0
[root@love ~]# sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

安装组件

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

解压并安装Redis

[root@love ~]# tar zxf redis-7.2.4.tar.gz -C /usr/src/
[root@love ~]# cd /usr/src/redis-7.2.4/
[root@love redis-7.2.4]# make && make install

Redis操作命令关联系统

ln -s src/* /usr/sbin/

创建群集配置目录

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

分别修改6台Redis

[root@love 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		     #将 #删除 开启群集节点超时

每个节点启动redis服务 不同节点变换目录

[root@love redis-7.2.4]# redis-server cluster/6001/redis.conf

创建群集 仅在node 1 操作

[root@love redis-7.2.4]# yum -y install ruby ruby-devel rpm-build
[root@love redis-7.2.4]# redis-cli --cluster create 192.168.19.10:6001 192.168.19.20:6002 192.168.19.30:6003 192.168.19.40:6004 192.168.19.50:6005 192.168.19.60:6006 --cluster-replicas 1

验证测试

[root@love redis-7.2.4]# redis-cli -h 192.168.19.10 -p 6001 -c

查看关系

[root@love redis-7.2.4]# cluster slots

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

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

相关文章

算法沉淀——动态规划之完全背包问题(leetcode真题剖析)

算法沉淀——动态规划之完全背包问题 01.【模板】完全背包02.零钱兑换03.零钱兑换 II04.完全平方数 完全背包问题是背包问题的一种变体,与01背包问题不同,它允许你对每种物品进行多次选择。具体来说,给定一个固定容量的背包,一组物…

TCPDump 使用教程

每次服务器网络不通的时候,总会听到一个声音,你去抓包啊,那这里就来介绍下TCPDump,一款强大的网络分析工具,可以捕获网络上的数据包,并进行分析。这款工具在网络管理员和安全专家中非常受欢迎。 一、安装 …

防火墙:网络防御的第一道防线

目录 引言 一、安全技术与防火墙 (一)安全技术 (二)防火墙的主要功能与分类 1.防火墙的主要功能 2.防火墙的分类 二、Linux防火墙的基本认识 (一)Netfilter (二)防火墙工具…

单调队列(347. 前 K 个高频元素239. 滑动窗口最大值)

单调队列和单调栈其实差不多,就是维护一个区间单调的队列或者是栈,单调队列就是我们所说的大顶堆小顶堆, //升序队列 小顶堆 great 小到大 priority_queue <int,vector<int>,greater<int> > pri_que; //降序队列 大顶堆 less 大到小 默认 priority_qu…

【AI视野·今日NLP 自然语言处理论文速览 第八十一期】Mon, 4 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 4 Mar 2024 Totally 48 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Mitigating Reversal Curse via Semantic-aware Permutation Training Authors Qingyan Guo, Rui Wang, Junlia…

Fisher矩阵与自然梯度法

文章目录 Fisher矩阵及自然梯度法Fisher矩阵自然梯度法总结参考链接 Fisher矩阵及自然梯度法 自然梯度法相比传统的梯度下降法具有以下优势&#xff1a; 更好的适应性&#xff1a;自然梯度法通过引入黎曼流形上的梯度概念&#xff0c;能够更好地适应参数空间的几何结构。这使…

今日学习总结2024.3.3

今天也是全天自习的一天&#xff0c;非常充实 早上八点开始接着晚上的docker配置&#xff0c;并一边同步博客&#xff0c;还是遇到了卡壳看了一个视频&#xff0c;里面提到了物联网&#xff0c;感觉对这个概念更加了解了&#xff0c;当年填报专业志愿的时候有将物联网工程放在…

LCR 134. Pow(x, n)

解题思路&#xff1a; 分治 快速幂 Java中向下取整n/2即可 需要结合下图理解&#xff0c;算法就是实现的该过程 class Solution {public double myPow(double x, int n) {if(x 0.0f) return 0.0d;long b n;double res 1.0;//例如:2^-5(1/2)^5if(b < 0) {x 1 / x;b -b…

Python中可迭代数据类型

有序集合 有序的集合包括&#xff1a;列表、字符串以及元组。 对于任意Python序列可应用的运算&#xff1a; 运算名运算符解释长度len(sequence)返回序列的长度。索引访问sequence[i]返回索引 i 处的元素。切片sequence[i:j]返回从索引 i 到 j 的子序列。成员检查item in seq…

访问⾸⻚的速度很慢,有哪些⽅法可以提⾼访问速度?

1. 减少HTTP请求 可以通过简化页面设计&#xff0c;减少页面中图片、样式表、JavaScript等组件的数量来降低HTTP请求次数。此外&#xff0c;合并文件也是一个有效的方法&#xff0c;即将所有脚本或样式表文件合并为一个文件&#xff0c;和使用图片精灵以减少请求的数量。 2. …

【Python】Python教师/学生信息管理系统 [简易版] (源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

accept()函数

accept 函数是用于在服务器端接受客户端连接的系统调用。以下是 accept 函数的详细解读&#xff1a; #include <sys/types.h> #include <sys/socket.h>int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);sockfd&#xff1a; 是一个已经通过 soc…

京东商品优惠券API获取商品到手价

item_get_app-获得JD商品详情原数据 公共参数 请求地址: jd/item_get_app 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,i…

MATLAB环境下基于区域椭圆拟合的细胞分割方法

使用图像分割技术可以找到图像中的目标区域&#xff0c;目标区域可以定义为具有特定值的单个区域&#xff0c;也可以定义为具有相同值的多个区域。目前图像分割已经融入到生活中的方方面面&#xff0c;在遥感领域&#xff0c;它应用于航拍图中的地形、地貌的分割&#xff1b;在…

高可用架构实现流量治理的策略

一 概述 1.1 高可用评判指标 1.平均故障间隔&#xff08;Mean Time Between Failure&#xff0c;简称 MTBF&#xff09;&#xff1a;表示两次故障的间隔时间&#xff0c;也就是系统正常运行的平均时间&#xff0c;这个时间越长&#xff0c;说明系统的稳定性越高&#xff1b; …

[AIGC] Flink入门教程:理解DataStream API(Java版)

简介 Apache Flink是一款开源的流处理框架&#xff0c;它在大数据处理场景中被广泛应用。Flink的数据流API&#xff08;DataStream API&#xff09;是一个强大的、状态匹配的流处理API&#xff0c;它可以处理有界和无界数据流。 本教程将向你介绍如何使用Java来编写使用DataS…

SpringMVC框架②

三、RequestMapping注解 3、RequestMapping注解的value属性 必须设置 发送一个请求最直观的表示方式就是一个请求路径 altenter 进入接口方法 再用 alte7 查看里面的属性 value值可以是数组 value{"test","test1"} 只满足任何一个请求地址就会调用此方…

GO语言学习笔记(与Java的比较学习)(五)

Map 概念 map 是引用类型&#xff0c;可以使用如下声明&#xff1a; var map1 map[keytype]valuetype var map1 map[string]int 在声明的时候不需要知道 map 的长度&#xff0c;map 是可以动态增长的。 未初始化的 map 的值是 nil&#xff08;即零值为nil&#xff09;&…

国际化 Vue-i18n的安装与使用 (Vue2.0 / Vue3.0)

国际化 Vue-i18n的安装与使用 &#xff08;Vue2.0 / Vue3.0&#xff09; 一、Vue-i18n是什么&#xff1f; Vue-I18n是 Vue.js 的国际化插件。它可以轻松地将一些本地化功能集成到你的 Vue.js 应用程序中。简单来说就是可以帮助用户进行语言的切换” 二、使用步骤 1.引入库 代码…

智慧城市的创新实践:全球案例分享

一、引言 在全球化和数字化的时代&#xff0c;智慧城市已经成为城市发展的前沿趋势。智慧城市运用先进的信息技术&#xff0c;如大数据、物联网、云计算和人工智能等&#xff0c;提升城市管理的智能化水平&#xff0c;增强公共服务效率&#xff0c;优化居民生活质量。本文将通…