栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Redis安装

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis安装

目录

Redis单机安装

Redis主从架构安装


Redis单机安装
上传redis安装包
解压缩:
tar -xzf redis-6.2.4.tar.gz
进入redis目录:
cd redis-6.2.4
运行编译命令:
make &&make install

如果没有出错,应该就安装成功了。

然后修改redis.conf文件中的一些配置: 

# 绑定地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问
bind 0.0.0.0
# 保护模式,关闭保护模式
protected-mode no
# 数据库数量,设置为1
databases 1
# 后台启动设置daemonize no改成yes
# 修改redis.conf(128行)文件将里面的daemonize no 改成 yes,让服务在后台启动
# 设置redis访问密码
requirepass 123456

启动Redis:

redis-server redis.conf

停止redis服务:

redis-cli shutdown

Redis主从架构安装 

1.创建三个文件夹,名字分别叫7001、7002、7003:

2.mkdir 7001 7002 7003

3.将redis-6.2.4/redis.conf文件拷贝到三个目录中

# 方式一:逐个拷贝
cp redis-6.2.4/redis.conf 7001
cp redis-6.2.4/redis.conf 7002
cp redis-6.2.4/redis.conf 7003
# 方式二:管道组合命令,一键拷贝
echo 700170027003| xargs -t -n 1cp redis-6.2.4/redis.conf

4.修改每个实例的端口、工作目录(可以在文件中手动修改,也可以使用命令修改)

sed -i -e 's/6379/7001/g'-e 's/dir .//dir /tmp/7001//g'7001/redis.conf
sed -i -e 's/6379/7002/g'-e 's/dir .//dir /tmp/7002//g'7002/redis.conf
sed -i -e 's/6379/7003/g'-e 's/dir .//dir /tmp/7003//g'7003/redis.conf

5.启动

# 第1个redis-server 7001/redis.conf
# 第2个redis-server 7002/redis.conf
# 第3个redis-server 7003/redis.conf

6.开启主从关系

修改配置文件(永久生效)在redis.conf中添加一行配置:
	slaveof  
使用redis-cli客户端连接到redis服务,执行slaveof命令(重启后失效):
	slaveof  
	
如果redis设置了密码,需配置主redis密码:masterauth 123456

通过redis-cli命令连接7001,执行下面命令:
redis-cli -p 7001

#查看状态
info replication

数据同步原理

1. 主从第一次同步是全量同步

master如何判断slave是不是第一次来同步数据?这里会用到两个很重要的概念:

  • Replication id:简称replid,是数据集的标记,id一致则说明是同一数据集。每一个master都有唯一的replid,slave则会继承master节点的replid
  • offset:偏移量,随着记录在repl_baklog中的数据增多而逐渐增大。slave完成同步时也会记录当前同步的offset。如果slave的offset小于master的offset,说明slave数据落后于master,需要更新。

因此slave做数据同步,必须向master声明自己的replication id和offset,master才可以判断到底需要同步哪些数据.

简述全量同步的流程?

  • slave节点请求增量同步
  • master节点判断replid,发现不一致,拒绝增量同步
  • master将完整内存数据生成rdb,发送rdb到slave
  • slave清空本地数据,加载master的rdb
  • master将rdb期间的命令记录在repl_baklog,并持续将log中的命令发送给slave

2. 主从第一次同步是全量同步,但如果slave重启后同步,则执行增量同步

注意:

repl_baklog大小有上限,写满后会覆盖最早的数据。如果slave断开时间过久,导致尚未备份的数据被覆盖,则无法基于log做增量同步,只能再次全量同步。

repl_baklog大小有上限,写满后会覆盖最早的数据。如果slave断开时间过久,导致数据被覆盖,则无法实现增量同步,只能再次全量同步。

可以从以下几个方面来优化redis主从集群:

  • 在master中配置repl-diskkless-sync yes启用无磁盘复制,避免全量同步时的磁盘IO

使用场景:磁盘比较慢,网络非常快时

提高全量同步性能

  • redis单节点上的内存占用不要太大,减少RDB导致的过多磁盘IO

提高全量同步性能

  • 适当提高repl_baklog的大小,发现slave宕机时尽快实现故障恢复,尽可能避免全量同步
  • 限制一个master上的slave节点数量,如果实在是太多slave,则可以采用主-从-从链式结构,减少master压力

简述全量同步和增量同步区别

(1)全量同步:master将完整内存数据生成rdb,发送rdb到slave,后续命令则记录在repl_baklog,逐个发送给slave。

(2)增量同步:slave提交自己的offset到master,master获取repl_baklog中从offset之后的命令给slave。

什么时候执行全量同步?

(1)slave节点第一次连接master节点时

(2)slave节点断开时间太久,repl_baklog中的offset已经被覆盖时

什么时候执行增量同步?

slave节点断开又恢复,并且在repl_baklog中能找到offset时

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/949254.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号