redis 主从配置

2023-11-13

转:https://blog.csdn.net/github_26672553/article/details/69568259

redis主从配置初步:2个节点主从

如果我们redis的压力很大,如果我们的并发高到我们读数据和写数据都有了很大压力。 
那么我们可能就需要把redis分开部署,并且配置为一个『主从』的状态。 
这里写图片描述

首先我们要安装redis

官网地址: 
https://redis.io 
(一定要去官网下载) 
这里写图片描述

下载之后,会有一个redis-3.2.8.tar.gz 
(注意我们后面整个过程不要使用root帐号,我这里是在一个叫’admin’的用户下’) 
这里写图片描述

1、解压

tar zxvf redis-3.2.8.tar.gz
  • 1

2、进入redis源码目录

cd redis-3.2.8
  • 1

这里边的文件,我们需要编译 
这里写图片描述

3、编译 
根据手册 
https://redis.io/download 
执行命令:

make
  • 1

编译好后会在src目录生成一些可执行文件 
这里写图片描述

为了方便,我们把一些文件拷贝到/usr/local/redis中

1、在/usr/local/下创建需要的目录

cd /usr/local
sudo mkdir redis #创建目录
  • 1
  • 2

注意:如果报”admin is not in the sudoers file. This incident will be reported.”错误。是因为执行sudo命令的用户不在sudoers文件的列表中。可以通过编辑sudoers文件,来解决这个问题。 
切换到root帐号执行:vi /etc/sudoers 
为了让admin这个用户能够执行sudo命令,在sudoers文件中加入一行: 
admin ALL=(ALL) ALL

2、/usr/local/redis目录创建成功,需要修改redis目录所有者

sudo chown -R admin:admin redis/
  • 1

3、然后在redis目录,新建binconf目录。(不是必须的,只不是过为了方便而已) 
这里写图片描述

4、把前面编译后的redis的可执行文件(在redis-3.2.8/src/下),复制到/usr/local/redis/bin里面去

sudo cp redis* /usr/local/redis/bin/
#拷贝redis开头的所有文件
  • 1
  • 2

5、redis提供给我们了一个默认的配置文件redis.conf 
把它复制到/usr/local/redis/conf目录下,并改名为6379.conf

sudo cp redis.conf  /usr/local/redis/conf/6379.conf
  • 1

这里写图片描述

6、删除一些不必要的文件(我们只需要redis的可执行文件)

 sudo rm *.c
 sudo rm *.o
 sudo rm *.h
  • 1
  • 2
  • 3

这里写图片描述

7、修改配置文件

sudo vi 6379.conf
  • 1

修改如下几个配置:

daemonize no 
修改为:
daemonize yes  (后台程序方式运行)

pidfile /var/run/redis_6379.pid
修改为:
pidfile /usr/local/redis/redis_6379.pid
(把pidfile生成到有权限的目录下)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

8、启动 
注意文件夹路径不要搞错

/usr/local/redis/bin/redis-server /usr/local/redis/conf/6379.conf 
  • 1

这里写图片描述

9、配置从节点

sudo cp 6379.conf 6380.conf
  • 1

修改6380.conf 
修改对应的端口和pid配置 
然后加入slaveof 127.0.0.1 6379

port 6379
修改为:
port 6380

pidfile /usr/local/redis/redis_6379.pid
修改为:
pidfile /usr/local/redis/redis_6380.pid

增加一行:
slaveof 127.0.0.1 6379
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

10、启动2个redis实例

/usr/local/redis/bin/redis-server /usr/local/redis/conf/6379.conf 
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6380.conf 
  • 1
  • 2

这里写图片描述

11、启动redis客户端 
去连接6379那个实例

cd /usr/local/redis/bin/

./redis-cli -h 127.0.0.1 -p 6379
  • 1
  • 2
  • 3

连上之后输入:info命令 
这里写图片描述
可以从中看到很多信息,比如:

role:master #本机是『主』
connected_slaves:1 #有1个『奴隶』
slave0:ip=127.0.0.1,port=6380,state=online,offset=11957,lag=1
#"从"服务器iP地址和端口是
  • 1
  • 2
  • 3
  • 4

这里写图片描述

12、新增

set name zhangsan
  • 1
#读取
get name
  • 1
  • 2

这里写图片描述

13、然后访问6380那个实例

./redis-cli -h 127.0.0.1 -p 6380

get name
  • 1
  • 2
  • 3

这里写图片描述

我们发现这2个实例已经完成了数据的同步。

如果我们要在从服务器写入

set name lisi
#会提示:(error) READONLY You can't write against a read only slave.
#因为从服务器只有读权限,我们做的就是redis的读写分离啊
  • 1
  • 2
  • 3

这里写图片描述

我们这里演示是在一台机器上,分了2个端口,真实开发肯定是2台机器了,不然分离就没有意义了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis 主从配置 的相关文章

  • Java 将字节转换为二进制安全字符串

    我有一些以字节为单位的数据 我想将它们放入Redis中 但是Redis只接受二进制安全字符串 而我的数据有一些二进制非安全字节 那么如何将这些字节转换为二进制安全字符串以便将它们保存到 Redis 中呢 Base64 对我有用 但它使数据更
  • Redis、会话过期和反向查找

    我目前正在构建一个网络应用程序 并想使用 Redis 来存储会话 登录时 会话会使用相应的用户 ID 插入到 Redis 中 并且过期时间设置为 15 分钟 我现在想实现会话的反向查找 获取具有特定用户 ID 的会话 这里的问题是 由于我无
  • Spring Data JPA Redis:无法编写基于自定义方法的查询

    我已经使用 Redis 配置了 Spring Data JPA 并使用RedisRepositorieswith 提供了类似的方法find findAll 所有这些方法似乎都工作得很好 但我无法编写我的自定义方法 RedisEntity f
  • redis - 使用哈希

    我正在使用 redis 为我的 Web 应用程序实现社交流和通知系统 我是 redis 的新手 我对哈希值及其效率有一些疑问 我读过这篇很棒的文章Instagram 帖子 http instagram engineering tumblr
  • Redis是如何实现高吞吐量和高性能的?

    我知道这是一个非常普遍的问题 但是 我想了解允许 Redis 或 MemCached Cassandra 等缓存 以惊人的性能极限工作的主要架构决策是什么 如何维持连接 连接是 TCP 还是 HTTP 我知道它完全是用C写的 内存是如何管理
  • 如何使redis中的“HSET”子键“过期”?

    我需要使 Redis 哈希中所有超过 1 个月的密钥过期 这不可能 https github com antirez redis issues 167 issuecomment 2559040 为了保持 Redis 简单 https git
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc
  • 在 Redis 上为 Django 和 Express.js 应用程序共享会话存储

    我想创建一个包含一些登录用户的 Django 应用程序 另一方面 由于我想要一些实时功能 所以我想使用 Express js 应用程序 现在的问题是 我不希望身份不明的用户访问 Express js 应用程序的日期 因此 我必须在 Expr
  • 想要在后台不间断地运行redis-server

    我已经下载了 redis 2 6 16 tar gz 文件并安装成功 安装后我运行 src redis server 它工作正常 但我不想每次都手动运行 src redis server 而是希望 redis server 作为后台进程持续
  • 创建 C++ Redis 模块 - “不导出 RedisModule_OnLoad() 符号”

    我在加载 Redis 模块时遇到一些问题 我只是复制来自的示例https redis io topics modules intro https redis io topics modules intro 但我把它剥下来了 include
  • Redis 队列工作程序在 utcparse 中崩溃

    我正在尝试按照以下教程获得基本的 rq 工作 https blog miguelgrinberg com post the flask mega tutorial part xxii background jobs https blog m
  • Laravel Redis 配置

    我目前正在使用 Laravel 和 Redis 创建一个应用程序 几乎一切都工作正常 我按照文档中的说明扩展了身份验证 用户可以订阅 登录 注销 我可以创建内容 所有内容都存储在 Redis 中 但我有一个问题 我无法运行 php arti
  • Redis 在键过期时更新排序集

    我有一个 Redis 服务器 其中包含一组键值对和一个排序集 提供这些键值对的键的索引 键值对可以进入 已完成 状态 此时需要在 1 小时后删除它们 这可以通过在键上设置到期时间来简单地实现 但从排序集中清除它们似乎更成问题 我可以有一个过
  • 为什么我们需要 Redis 来运行 CKAN?

    我想知道为什么我们需要 Redis 服务器来运行 CKAN 如果需要 为什么 我如何使用 CKAN 配置它 附注 我正在 RHEL7 中运行我的 ckan 实例 Update Redis 已成为一项要求从CKAN 2 7开始 https d
  • 检查 Redis 列表中是否已存在某个值

    我想知道是否有办法检查 redis 列表中是否已存在某个键 我无法使用集合 因为我不想强制唯一性 但我确实希望能够检查字符串是否确实存在 Thanks 您的选择如下 Using LREM如果发现则更换它 维护一个单独的SET与您的LIST
  • redis.exceptions.ConnectionError:连接到本地主机时出现错误-2:6379。名称或服务未知

    当我在服务器中运行代码时出现此错误 我的环境是 debian 并且Python2 7 3 Traceback most recent call last File fetcher py line 4 in
  • 如何在Redis中使用HSCAN命令?

    我想在我的作业中使用 Redis 的 HSCAN 命令 但我不知道它是如何工作的 Redis 的官方页面 http redis io commands hscan http redis io commands hscan 这个命令给了我空白
  • 如果没有过期的内容,Redis maxmemory-policy volatile-lru 是否会被驱逐?

    我有一个 redis 服务器 设置了maxmemory policy set to volatile lru 文档表明 当达到内存限制时 这将从设置过期的条目集中逐出 在这种情况下 redis 是否只驱逐过期的项目 如果内存中的所有内容都设
  • Flask-SocketIO redis 订阅

    我在用着https github com miguelgrinberg Flask SocketIO https github com miguelgrinberg Flask SocketIO实现 WebSocket 服务器 我需要从另一
  • 有没有好的方法支持 Redis 排序集中的 pop 成员?

    有没有好的方法可以像 List 的 api LPOP 一样支持 Redis 排序集中的 pop 成员 我发现从 Redis 排序集中弹出消息是使用 ZRANGE ZREM 但是它不是线程安全性 并且当多个线程从不同主机同时访问它们时需要分布

随机推荐

  • springboot学习(十一)整合JDBC

    之前拿的那个项目都是没有数据库的 这里涉及到整合数据库进来 springboot工程初始化要勾选SQL里面的jdbc api和MySQL 你要是别的数据库就勾选对应的 对于数据访问层 无论是 SQL 关系型数据库 还是 NOSQL 非关系型
  • Kafka eagle的介绍及安装(基于linux环境)

    kafka eagle kafka鹰 是一款由国内公司开源的Kafka集群监控系统 用于监控 Kafka 集群中 Topic 被消费的情况 包含 Lag 的产生 Offset 的变动 Partition 的分布 Owner Topic 被创
  • PCB走线辟谣总结,究竟应该怎么找拐角?

    现在但凡打开 SoC原厂的PCBLayout Guide 都会提及到高速信号的走线的拐角角度问题 都会说高速信号不要以直角走线 要以 45 度角走线 并且会说走圆弧会比 45 度拐角更好 事实是不是这样 PCB 走线角度该怎样设置 是走 4
  • java将属性设置为私有,在给其添加get/set方法和直接把属性设置成public有什么区别

    现在以信用卡为例简单介绍下 public class TestEncapsulation public sataic void main String args CreditCard card new CreditCard System o
  • 如何更改Visual Studio 2019的语言

    第0步 开启Visual Studio 2019 第1步 工具 gt 获取工具和功能 第2步 下载语言包 等待下载 第3步 设置语言 工具 Tools gt 选项 Options 然后重启 VS 就可以看到变化了
  • MediaMetadataRetriever类取得媒体文件信息

    http blog csdn net ameyume article details 7849641 API说明 MediaMetadataRetriever class provides a unified interface for r
  • Java内存管理和面向对象

    Java内存管理 Java的内存管理是自动化的 通过垃圾回收器 Garbage Collector 简称GC 来管理内存分配和释放 在本教程中 我们将探讨Java中的内存管理概念 垃圾回收和一些内存管理相关的最佳实践 步骤1 Java的内存
  • 数据集【NO.10】天池布匹瑕疵检测

    写在前面 数据集对应应用场景 不同的应用场景有不同的检测难点以及对应改进方法 本系列整理汇总领域内的数据集 方便大家下载数据集 若无法下载可关注后私信领取 关注免费领取整理好的数据集资料 今天分享一个非常好的非常小众的研究方向 有应用创新
  • 分布式强一致算法 —— Raft算法

    背景 Paxos算法是最早的强一致性算法 1990年被Leslie Lamport提出 但是由于其难以理解和实现 导致没有被广泛使用 因此 2013年Raft算法被提出 功能与Paxos算法相同 更易于理解 实现简单 因此迅速被广泛推广使用
  • 嵌入式linux驱动之路19:U-Boot 移植(2)

    uboot 的最终目的就是启动 Linux 内核 所以需要通过启动 Linux 内核来判断 uboot 移植是否成功 在启动 Linux 内核之前我们先来学习两个重要的环境变量 bootcmd 和 bootargs bootcmd 环境变量
  • vue3+vite+ts 图标封装3种方案

    目录 一 使用 iconify 图标库 1 下载插件 2 配置 vite config ts 3 使用 3 1 方式 1 3 2 方式 2 二 使用 iconfont 图标库 1 下载 iconfont js 2 将 iconfont js
  • ElementUI 中 Tree 树形控件 添加自定义样式 虚线及图标样式

    修改前样式 修改后样式如图
  • MAC搭建M1环境的stable-diffusion

    MAC M1 搭建 stable diffusion 环境 文章目录 MAC M1 搭建 stable diffusion 环境 环境准备 1 硬件环境 2 系统环境 3 基础软件环境 主要参考资料 操作步骤 1 下载git 2 下载con
  • 量子信息-学习记录13

    ch 13 量子计算机的物理实现 续 量子计算机的基本事实 定义 Q tau Q Q 是量子系统在抵抗量子噪声 并维持自身的量子特性时所能够持续的最短时间
  • kettle使用常见问题解决-03

    kettle使用常见问题解决 03 一 kettle资源库总是断开 报的错误信息如下 An error occured loading the directory tree from the repository Error comitti
  • 如何在屏幕上打印

    这是本人发的第一个博客 我想用写博客来回顾和复习本人学习c语言的过程 我们学习计算机语言是为让计算机完成一定的任务 而任务的结果是在屏幕上显示出来的 因此 我们要学习如何在屏幕上打印内容 include
  • SAP之FIORI(1)-绪论

    SAP之FIORI 1 绪论 web IDE的下载地址 https tools hana ondemand com sapui5 下载好运行之后orion exe之后登录网址 http localhost 8080 webide index
  • 全面解析JavaScript中对于字符串子串的查询方法

    一 基本应用场景 Q1 给定字符串a xxx 给定字符串b xxxxxx 判定a是否为b的子串 基础手写实现方法 function checkHas longStr shortStr for let i 0 i lt longStr len
  • 基于遗传算法GA算法优化BP神经网络(Python代码实现)

    一 概述 BP GA算法的设计 基于遗传算法的BP神经网络算法 以下简称BP GA 就是在BP神经网络的学习过程中 将权重和阀值描述为染色体 并选取适宜的适应函数 然后进行GA迭代 直到某种意义上的收敛 与普通BP学习算法相比 算法 BP一
  • redis 主从配置

    转 https blog csdn net github 26672553 article details 69568259 redis主从配置初步 2个节点主从 如果我们redis的压力很大 如果我们的并发高到我们读数据和写数据都有了很大