Redis集群 - 配置最简单的Redis主从读写分离

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis集群 - 配置最简单的Redis主从读写分离

要求:

1、你已经知道redis是什么

2、熟悉Linux基本操作(CentOS 6.5)

3、有单机redis开发相关经验

4、有主观能动性,至少熟练百度的使用

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

2、进入redis源码目录

cd redis-3.2.8

这里边的文件,我们需要编译

3、编译

根据手册

https://redis.io/download

执行命令:

make

编译好后会在src目录生成一些可执行文件

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

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

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

注意:如果报”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/

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

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

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

5、redis提供给我们了一个默认的配置文件redis.conf

把它复制到/usr/local/redis/conf目录下,并改名为6379.conf

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

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

sudo rm *.c
 sudo rm *.o
 sudo rm *.h

7、修改配置文件

sudo vi 6379.conf

修改如下几个配置:

daemonize no 
修改为:
daemonize yes  (后台程序方式运行)
pidfile /var/run/redis_6379.pid
修改为:
pidfile /usr/local/redis/redis_6379.pid
(把pidfile生成到有权限的目录下)

8、启动

注意文件夹路径不要搞错

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

9、配置从节点

sudo cp 6379.conf 6380.conf

修改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

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 

11、启动redis客户端

去连接6379那个实例

cd /usr/local/redis/bin/
./redis-cli -h 127.0.0.1 -p 6379

连上之后输入:info命令

可以从中看到很多信息,比如:

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

20170408104439232.png

12、新增

set name zhangsan
#读取
get name

13、然后访问6380那个实例

./redis-cli -h 127.0.0.1 -p 6380
get name

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

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

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

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

        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
            </div>


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
监控 NoSQL Redis
看完这篇就能弄懂Redis的集群的原理了
看完这篇就能弄懂Redis的集群的原理了
56 0
|
2月前
|
NoSQL Redis 容器
【Azure Cache for Redis】Redis的导出页面无法配置Storage SAS时通过az cli来完成
【Azure Cache for Redis】Redis的导出页面无法配置Storage SAS时通过az cli来完成
|
2月前
|
缓存 NoSQL 测试技术
【Azure Redis 缓存】Azure Redis 功能性讨论三: 调优参数配置
【Azure Redis 缓存】Azure Redis 功能性讨论三: 调优参数配置
|
2月前
|
存储 缓存 NoSQL
【Azure Redis 缓存】当使用Azure Redis 集群服务时候,发生了Moved的几点分析
【Azure Redis 缓存】当使用Azure Redis 集群服务时候,发生了Moved的几点分析
|
2月前
|
存储 缓存 NoSQL
【Azure Redis 缓存】由Azure Redis是否可以自定义密码而引申出Azure PaaS的Redis服务是否可以和自建的Redis进行主从配置呢?
【Azure Redis 缓存】由Azure Redis是否可以自定义密码而引申出Azure PaaS的Redis服务是否可以和自建的Redis进行主从配置呢?
|
2月前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】如何使得Azure Redis可以仅从内网访问? Config 及 Timeout参数配置
【Azure Redis 缓存】如何使得Azure Redis可以仅从内网访问? Config 及 Timeout参数配置
|
2月前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果
【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果
|
2月前
|
存储 NoSQL Ubuntu
在Ubuntu 16.04上安装和配置Redis的方法
在Ubuntu 16.04上安装和配置Redis的方法
71 0
|
21天前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
2月前
|
缓存 NoSQL Java
Redis深度解析:解锁高性能缓存的终极武器,让你的应用飞起来
【8月更文挑战第29天】本文从基本概念入手,通过实战示例、原理解析和高级使用技巧,全面讲解Redis这一高性能键值对数据库。Redis基于内存存储,支持多种数据结构,如字符串、列表和哈希表等,常用于数据库、缓存及消息队列。文中详细介绍了如何在Spring Boot项目中集成Redis,并展示了其工作原理、缓存实现方法及高级特性,如事务、发布/订阅、Lua脚本和集群等,帮助读者从入门到精通Redis,大幅提升应用性能与可扩展性。
60 0
下一篇
无影云桌面