Redis学习+集群搭建+持久化+主从复制(详细学习)_windows7 redis集群搭建(1)

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

cd /data/soft
wget http://download.redis.io/releases/redis-5.0.7.tar.gz


###### 3.解压redis到/opt/redis\_cluster/



tar xf redis-5.0.7.tar.gz -C /opt/redis_cluster/
ln -s /opt/redis_cluster/redis-5.0.7 /opt/redis_cluster/redis


###### 4.切换目录安装redis



cd /opt/redis_cluster/redis
make && make install


###### 5.编写redis启动配置文件



vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
bind 127.0.0.1 192.168.2.1 #指定启动地址
port 6379 #端口号
daemonize yes
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid #存放PID的文件目录
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log #存放日志的文件目录
databases 16
dbfilename redis.rdb #数据库文件
dir /opt/redis_cluster/redis_6379 #群集文件
保存退出


###### 6.启动当前的服务



redis-server /opt/redis_cluster/redis_6379/conf/6379.conf


###### 7.关闭服务



redis-cli shudown


###### 8.登录



redis-cli -h 127.0.0.1 -p 6379 #指定redis的地址,和端口号


### 三,redis命令


#### 一,redis 键(key)





|  |  |
| --- | --- |
| 命令 | 作用 |
| set [key] [value] | 创建键 |
| get [key] | 读取键内容 |
| del [key] | 删除key |
| dump [key] | 序列化 |
| exists [key] | 检查指定的key是否存在 |
| expire [key] seconde | 为给定key设置过期时间,以秒计数 |
| expireat [key] timestamp | 与expore类似,支持unix时间戳 |
| pexpire [key] milliseconds | 设置key过期时间,以毫秒为单位 |
| pexpireat [key] time | 设置key过期时间戳,以毫秒为单位 |
| keys [pattern] | 查找所有符合给定模式的key |
| move key db | 将当前数据库的key移动到指定的数据库db中 |
| persist key | 移除key的过期时间,key将持久保持 |
| pttl key | 以毫秒为单位返回key的剩余过期时间 |
| tty key | 以秒为单位,返回key的剩余生存时间 |
| randomkey | 从数据库中随机返回一个key |
| rename key newkey | 修改key的名称 |
| renamenx key newkey | 仅当newket不存在时,将key改名为newkey |
| type key | 返回key所储存的值的类型 |



#### 二,redis 字符串(string)





|  |  |
| --- | --- |
| 命令 | 作用 |
| set key value | 设置指定key的值 |
| get key | 获取key的值 |
| getrange key start end | 返回key中字符串的子字符 |
| getset key value | 将key的值设为value,并返回旧的值 |
| getbit key offset | 对key所有存储的字符串值,获取指定偏移量上的位 |
| mget key1 | 获取所有一个或多个key的值 |
| setbit key offset value | 对key所有储存的字符串值,设置或清除指定偏移量上的位 |
| setex key seconds value | 将值value关联到key,并将key的过期时间设为seconds |
| setnx key value | 只要在key不存在时设置key的值 |
| strlen key | 返回key所储存的字符串的长度 |
| mset key value [key value] | 同时设置一个或多个key-value |
| msetnx key value [key value] | 同时设置一个或多个key-value,当且仅所有给定key都不存在 |
| incr key | 将key中存储的数字+1 |
| incrby key increment | 将key所存储的值加上给定的浮点增量值 |
| decr key | 将key中储存的数字减一 |
| append key value | 如果key已经存在并且是一个字符串,append命令将指定的value追加到该key原来值(value)的末尾 |



#### 三,redis 哈希(hash)



Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。





|  |  |
| --- | --- |
| 命令 | 作用 |
| hdel key field | 删除一个或多个哈希字段 |
| hexists key field | 查看哈希表key中,指定的字段是否存在 |
| hget key field | 获取在哈希表中指定key的所有字段和值 |
| hgetall key | 获取在哈希表中指定key的所有字段和值 |
| hincrby key field increment | 为哈希表key中的指定字段的整数值加上增量increment |
| hkeys key | 获取所有哈希表中的字段 |
| hlen key | 获取哈希表中字段的数量 |
| hmget key field1 | 获取所有给定字段的值 |
| hmset key field1 value | 同时将多个field-value对设置到哈希表key中 |
| hsetnx key filed value | 只有在字段field不存在时,设置哈希表字段的值 |
| hset key field value | 将哈希表key中的字段field的值设为value |
| hvals key | 获取哈希表中所有的值 |



#### 四,redis 列表(list)





|  |  |
| --- | --- |
| 命令 | 作用 |
| blpop key1 timeout | 移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 |
| brpop key | 移出并获取列表的最后一个元素 |
| lindex key index | 通过索引获取列表中的元素 |
| llen key | 获取列表长度 |
| lpop key | 移出并获取列表的第一个元素 |
| lpush key value | 将一个或多个值插入到列表头部 |
| lrange key start stop | 获取列表指定范围内的元素 |
| lrem key count value | 移除列表元素 |
| lset key index value | 通过索引设置列表元素的值 |
| ltrim key start stop | 对一个列表进行修剪,让列表只保留指定区间内的元素 |
| rpop key | 移除列表 |
| rpoplpush source destination | 移除列表 |
| rpush key value1 | 在列表中添加一个或多个值 |
| rpushx key value | 为已存在的列表添加值 |



#### 五,redis 集合(set)





|  |  |
| --- | --- |
| 命令 | 作用 |
| sadd key member1 | 向集合添加一个或多个成员 |
| scard key | 获取集合的成员数 |
| sdiff key1 | 返回第一个集合与其他集合之间的差异 |
| sdiffstore destination key1 | 返回给定所有集合的差集并存储在destination |
| sinter key1 key2 | 返回给定所有集合的交集 |
| sinterstore destination key1 | 判断 |
| sismember key member | 返回集合中的所有成员 |
| smove source destination member | 将member 元素从source集合移动到destination集合 |
| spop key | 移除并返回集合中的一个随机元素 |
| srandmember key [count] | 返回集合中一个或多个成员 |
| srem key member1 | 移除集合中一个或多个成员 |
| sunion key1 | 返回所有给定集合的并集 |
| sunionstore destination key1 | 所有给定集合并集存储在destination集合中 |
| sscan key cursor [match patterm] [count count] | 迭代集合中的元素 |



#### 六,reids 有序集合(sorted set)





|  |  |
| --- | --- |
| 命令 | 作用 |
| [ZADD key score1 member1 [score2 member2] | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
| zcard key | 获取有序集合的成员数 |
| zcount key min max | 计算在有序集合中指定区间分数的成员数 |
| zincrby key increment member | 有序集合中对指定成员的分数加上增量increment |
| zlexcount key min pmax | 在有序集合中计算指定字典区间内成员数量 |
| zrange key start stop | 通过索引区间返回有序集合指定区间内的成员 |
| zrangebylex key min max | 通过字典区返回有序集合的成员 |
| zrank key member | 返回有序集合中指定成员的索引 |
| zrem key member member | 移除有序集合中的一个或多个成员 |
| zremrangebylex key min max | 移除有序集合中给定的字典区间的所有成员 |
| zremrangebyrank key start stop | 移除有序集合中给定的排名区间的所有成员 |
| zrevrank key\_member | 返回有序集合中指定分数区间内的成员,分数从高到低 |



### 四,redis持久化


#### 1.持久化类型


##### rdb方式:


rdb:是redis默认的持久化方法,rdb方法是通过快照完成的,他保存的是某一时的数据并不关注过程


 优点:


* rdb是二进制压缩文件,占用空间小,便于传输(传给slave)


* 主进程fork子进程,可以最大化redis性能


* 使用RDB文件来恢复数据快


 缺点:


* 不保证数据完整性,会丢失最后一次快照以后更改的所有数据


* 父进程在fork子进程的时候如果主进程比较大会阻塞


##### aof方式:


aof:开启aof持久化后redis将所有对数据进行写入的命令(以及参数),记录到aof文件,以此达到记录数据库状态的目的,这样当redis重启后只要按顺序回放这些命令就会恢复到原始状态了


优点:


* AOF存储命令操作


* 大概率保证数据不丢失


缺点:


* 日志量巨大


##### ROB与AOF对比


* RDB存某个时刻的数据快照,采用二进制压缩存储,AOF存操作命令,采用文本存储(混合);


* RDB性能高,AOF性能较低。


* RDB在配置触发状态会丢失最后一次快照以后更改的所有数据,AOF设置每一秒保存一次,则最多丢2秒数据


* redis以主服务器模式运行,RDB不会保存过期键值对数据,redis以从服务器模式运行,rdb会保存过期键值对,当主服务器向从服务器同步,再清空过期键值对


* aof写入文件时,对过期的key会追加一条del命令,当执行AOF重写,会忽略过期key和del命令


##### 应用场景


* 内存数据库rdb+aof数据不容易丢失


* 缓存数据器rdb性能高 不建议使用aof(性能差)


* 在数据还原时 有rdb+aof则还原aof,因为rdb会造成文件的丢失,aof相对数据要完整


#### 2.rdb配置



redis-cli 登录redis
bgsave rdb保存命令

vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照


#### 3.aof配置



vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
appendonly yes #启用AOF持久化
appendfilename “redis.aof” #指定AOF文件名
appendfsync everysec #每秒同步一次


#### 4.设置完成后,重启服务



redis-cli shutdown
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf


### 五,主从复制


#### 1.redis主从复制


 为解决单点故障把数据复制到一个或多个副本副本服务器(从服务器),实现故障恢复和负载均衡



#### 2.开启第二台服务器,安装redis


###### (1)把第一台服务器的redis安装目录,scp到第二台服务器上



scp -rp /opt/redis_cluster/ root@192.168.8.20:/opt

###### (2)在第二台服务器上,make install安装redis



cd /opt/redis_cluster/redis
make install
vim /opt/redis_cluster/redis_6379/conf/6379.conf 
修改:
bind 127.0.0.1 192.168.2.2
slaveof 192.168.2.1 6379
保存退出

###### (3)启动服务



redis-server /opt/redis_cluster/redis_6379/conf/6379.conf


###### (4)主服务器上新建键值,测试从服务器自动同步


###### (5)从服务器在同步过程中,只能复制主数据库的数据,不能手动添加修改数据;


 如果从服务器非要修改数据,需要断开同步:



redis-cli slaveof no one 

### 六,redis集群


#### 一,redis集群的概念


Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation)。


Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 Redis 节点之间移动数据, 并且在高负载的情况下, 这些命令将降低 Redis 集群的性能, 并导致不可预测的错误。


Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。


redis集群提供了以下两个好处:


* 将数据自动切分到多个节点的能力


* 当集群中的一部分节点失灵或无法进行通信,仍然可以继续处理命令请求能力


#### 二,集群redis部署


环境:


redis1-2:192.168.2.1


redis2-3:192.168.2.2


redis3-4:192.168.2.3


实现环境:





![](https://img-blog.csdnimg.cn/img_convert/70ff81912cd443528ab7cf0d3417c4d5.png)




##### 一,安装redis


###### 1.redis1部署


###### 1.安装redis



[root@localhost ~]# tar -xf /mnt/redis-5.0.7.tar.gz -C /opt/
[root@localhost ~]# /opt/redis-5.0.7
[root@localhost redis-5.0.7]# make && make install
[root@localhost ~]# ln -s /opt/redis-5.0.7/ /opt/redis #做一个软链接,方便以后更新


注意(当make编译时出现问题,大多数原因是缺少gcc编译器):[root@localhost redis-5.0.7]# yum -y install gcc gcc-c++


###### 2.创建配置文件存放位置



[root@localhost ~]# mkdir -p /opt/redis_cluster/redis_{6380,6381}/{conf,logs,pid}
[root@localhost ~]# mkdir -p /data/redis_cluster/redis_{6380,6381}


###### 3.编写redis配置文件



[root@localhost ~]# cat >/opt/redis_cluster/redis_6380/conf/redis_6380.conf<<EOF
bind 192.168.2.1
port 6380
daemonize yes
pidfile “/opt/redis_cluster/redis_6380/pid/redis_6380.pid”
logfile “/opt/redis_cluster/redis_6380/logs/redis_6380.log”
dbfilename “redis_6380.rdb”
dir “/data/redis_cluster/redis_6380/”
cluster-enabled yes
cluster-config-file nodes_6380.conf
cluster-node-timeout 15000
EOF


###### 4.创建6381端口的redis



[root@localhost ~]# cd /opt/redis_cluster/
[root@localhost redis_cluster]# cp redis_6380/conf/redis_6380.conf redis_6381/conf/redis_6381.conf
[root@localhost redis_cluster]# sed -i ‘s#6380#6381#g’ redis_6381/conf/redis_6381.conf


###### 5.启动redis



[root@localhost redis_cluster]# redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf
[root@localhost redis_cluster]# redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf


###### 6.传递redis



[root@localhost opt]# scp -rp /opt/redis*/ root@192.168.2.2:/opt
[root@localhost opt]# scp -rp /opt/redis*/ root@192.168.2.3:/opt


###### 2.redis2部署


###### 1.重新安装一下redis



[root@localhost ~]# cd /opt/redis
[root@localhost redis]# make install


###### 2.更改配置文件中的IP地址



[root@localhost redis]# find /opt/redis_cluster/redis_638* -type f -name “*.conf”|xargs sed -i “s#192.168.2.1#192.168.2.2#g”


###### 3.创建存放数据的目录



[root@localhost redis]# mkdir -p /data/redis_cluster/redis_{6380,6381}


###### 4.开启redis服务器



[root@localhost redis]# redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf
[root@localhost redis]# redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf


###### 3.redis3部署(同redis2除IP外)


##### 二,手动配置节点发现


节点发现使用命令: CLUSTER MEET {IP} {PORT}


提示:在集群内任意一台机器执行此命令就可以


###### 1.添加节点在192.168.2.1:6380



[root@localhost opt]# redis-cli -h 192.168.2.1 -p 6380 cluster meet 192.168.2.1 6381
OK
[root@localhost opt]# redis-cli -h 192.168.2.1 -p 6380 cluster meet 192.168.2.2 6380
OK
[root@localhost opt]# redis-cli -h 192.168.2.1 -p 6380 cluster meet 192.168.2.2 6381
OK
[root@localhost opt]# redis-cli -h 192.168.2.1 -p 6380 cluster meet 192.168.2.3 6380
OK
[root@localhost opt]# redis-cli -h 192.168.2.1 -p 6380 cluster meet 192.168.2.3 6381
OK
[root@localhost opt]# redis-cli -h 192.168.2.1 -p 6380 cluster nodes
b6f47e859ad6a3b9b238778d1cf0df4f95710a1f 192.168.2.3:6380@16380 master - 0 1678676225000 4 connected
dee913166afa30b567b151e6e1196847ed0a8a96 192.168.2.2:6381@16381 master - 0 1678676226000 0 connected
693d6d17f5860887d3343ebe0083351cd9815c8d 192.168.2.3:6381@16381 master - 0 1678676226199 5 connected
961bb9571f4e2f64a320da2631ae8cfc3b78d1e1 192.168.2.1:6381@16381 master - 0 1678676224000 1 connected
9f48a4262474744dc22524b28096ccba111d236d 192.168.2.1:6380@16380 myself,master - 0 1678676223000 2 connected
d9ea4f26b2221a5497d78326a7c1aff828e98426 192.168.2.2:6380@16380 master - 0 1678676227207 3 connected


###### 2.redis cluster通信流程


redis 集群采用 Gossip(流言)协议,Gossip 协议工作原理就是节点彼此不断交换信息,一段时间后所有的节点都会知道集群完整信息,这种方式类似流言传播。


通信过程:


1)集群中的每一个节点都会单独开辟一个 Tcp 通道,用于节点之间彼此通信,防火墙放行(端口号+10000).


2)每个节点在固定周期内通过特定规则选择结构节点发送 ping 消息


3)接收到 ping 消息的节点用 pong 消息作为响应。集群中每个节点通过一定规则挑选要通信的节点,每个节点可能知道全部节点,也可能仅知道部分节点,


只要这些节点彼此可以正常通信,最终他们会打成一致的状态,当节点出现故障,新节点加入,主从角色变化等,它能够给不断的ping/pong消息,从而达到同步目的。


通讯消息类型:


Gossip


Gossip 协议职责就是信息交换,信息交换的载体就是节点间彼此发送Gossip 消息。


常见 Gossip 消息分为:ping、 pong、 meet、 fail 等


* meet


meet 消息:用于通知新节点加入,消息发送者通知接受者加入到当前集群,meet 消息通信正常完成后,接收节点会加入到集群中并进行ping、 pong 消息交换


* ping


ping 消息:集群内交换最频繁的消息,集群内每个节点每秒想多个其他节点发送 ping 消息,用于检测节点是否在线和交换彼此信息。


* pong


Pong 消息:当接收到 ping,meet 消息时,作为相应消息回复给发送方确认消息正常通信,节点也可以向集群内广播自身的 pong 消息来通知整个集群对自身状态进行更新。


* fail


fail 消息:当节点判定集群内另一个节点下线时,回向集群内广播一个fail 消息,其他节点收到 fail 消息之后把对应节点更新为下线状态。


###### 3.redis cluster手动分配槽位


注意:虽然节点之间已经互相发现了,但是此时集群还是不可用的状态,因为并没有给节点分配槽位,而且必须是所有的槽位都分配完毕后整个集群才是可用的状态。 反之,也就是说只要有一个槽位没有分配,那么整个集群就是不可用的.



[root@localhost ~]# redis-cli -h 192.168.2.1 -p 6380 cluster addslots {0…5460}
OK
[root@localhost ~]# redis-cli -h 192.168.2.2 -p 6380 cluster addslots {5461…10922}
OK
[root@localhost ~]# redis-cli -h 192.168.2.3 -p 6380 cluster addslots {10923…16383}
OK


查看:



[root@localhost ~]# redis-cli -h 192.168.2.1 -p 6380 cluster nodes
b6f47e859ad6a3b9b238778d1cf0df4f95710a1f 192.168.2.3:6380@16380 master - 0 1678677991468 4 connected 10923-16383
dee913166afa30b567b151e6e1196847ed0a8a96 192.168.2.2:6381@16381 master - 0 1678677992477 0 connected
693d6d17f5860887d3343ebe0083351cd9815c8d 192.168.2.3:6381@16381 master - 0 1678677990459 5 connected
961bb9571f4e2f64a320da2631ae8cfc3b78d1e1 192.168.2.1:6381@16381 master - 0 1678677991000 1 connected
9f48a4262474744dc22524b28096ccba111d236d 192.168.2.1:6380@16380 myself,master - 0 1678677992000 2 connected 0-5460
d9ea4f26b2221a5497d78326a7c1aff828e98426 192.168.2.2:6380@16380 master - 0 1678677993485 3 connected 5461-10922


###### 4.手动分配集群高可用



[root@localhost ~]# redis-cli -h 192.168.2.1 -p 6381 cluster replicate d9ea4f26b2221a5497d78326a7c1aff828e98426 #输入第二台6380的ID
OK
[root@localhost ~]# redis-cli -h 192.168.2.2 -p 6381 cluster replicate b6f47e859ad6a3b9b238778d1cf0df4f95710a1f #输入第三台6380的ID
OK
[root@localhost ~]# redis-cli -h 192.168.2.3 -p 6381 cluster replicate 9f48a4262474744dc22524b28096ccba111d236d #输入第一台6380的ID
OK


###### 5.redis cluster ASK路由介绍


在集群模式下,Redis接受任何键相关命令时首先会计算键对应的槽,再根据槽找出所对应的节点


如果节点是自身,则处理键命令;


否则回复MOVED重定向错误,通知客户端请求正确的节点,这个过程称为Mover重定向.


知道了ask路由后,我们使用-c选项批量插入一些数据


###### 1.编写创建键值对脚本



[root@localhost ~]# vi input_key.sh
#!/bin/bash
for i in KaTeX parse error: Expected group after '_' at position 63: …1 -p 6380 set k_̲{i} v_KaTeX parse error: Expected 'EOF', got '&' at position 5: {i} &̲& echo "set k_{i} is ok"
done
#保存退出
#运行测试
bash input_key.sh


测试



[root@localhost ~]# redis-cli -c -h 192.168.2.1 -p 6380
192.168.2.1:6380> get k_10000
-> Redirected to slot [12695] located at 192.168.2.3:6380 #存放到了2.3上的第12695槽位
“v_10000”
192.168.2.3:6380> get k_1000
-> Redirected to slot [79] located at 192.168.2.1:6380 #存放到了2.1上的第79槽位
“v_1000”


##### 三,故障转移


###### 1.模拟redis2故障



[root@localhost ~]# redis-cli -h 192.168.2.2 -p 6380 shutdown


###### 2.查看从是否晋升为主



[root@localhost ~]# redis-cli -h 192.168.2.1 -p 6380 cluster nodes
b6f47e859ad6a3b9b238778d1cf0df4f95710a1f 192.168.2.3:6380@16380 master - 0 1678679339733 4 connected 10923-16383
dee913166afa30b567b151e6e1196847ed0a8a96 192.168.2.2:6381@16381 slave b6f47e859ad6a3b9b238778d1cf0df4f95710a1f 0 1678679339000 4 connected
693d6d17f5860887d3343ebe0083351cd9815c8d 192.168.2.3:6381@16381 slave 9f48a4262474744dc22524b28096ccba111d236d 0 1678679337719 5 connected
961bb9571f4e2f64a320da2631ae8cfc3b78d1e1 192.168.2.1:6381@16381 master - 0 1678679338726 6 connected 5461-10922
9f48a4262474744dc22524b28096ccba111d236d 192.168.2.1:6380@16380 myself,master - 0 1678679338000 2 connected 0-5460
d9ea4f26b2221a5497d78326a7c1aff828e98426 192.168.2.2:6380@16380 master,fail - 1678679289623 1678679289320 3 disconnected


###### 3.启动redis2:6380



[root@localhost redis]# redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf


###### 4.重回master



[root@localhost ~]# redis-cli -h 192.168.2.2 -p 6380 cluster failover
OK
[root@localhost ~]# redis-cli -h 192.168.2.1 -p 6380 cluster nodes
b6f47e859ad6a3b9b238778d1cf0df4f95710a1f 192.168.2.3:6380@16380 master - 0 1678679584000 4 connected 10923-16383
dee913166afa30b567b151e6e1196847ed0a8a96 192.168.2.2:6381@16381 slave b6f47e859ad6a3b9b238778d1cf0df4f95710a1f 0 1678679586000 4 connected
693d6d17f5860887d3343ebe0083351cd9815c8d 192.168.2.3:6381@16381 slave 9f48a4262474744dc22524b28096ccba111d236d 0 1678679586593 5 connected
961bb9571f4e2f64a320da2631ae8cfc3b78d1e1 192.168.2.1:6381@16381 slave d9ea4f26b2221a5497d78326a7c1aff828e98426 0 1678679583000 7 connected
9f48a4262474744dc22524b28096ccba111d236d 192.168.2.1:6380@16380 myself,master - 0 1678679584000 2 connected 0-5460
d9ea4f26b2221a5497d78326a7c1aff828e98426 192.168.2.2:6380@16380 master - 0 1678679585588 7 connected 5461-10922


#### 三,自动搭建部署redis cluster


##### 1.低版本部署


手动搭建集群便于理解集群创建的流程和细节,不过手动搭建集群需要很多步骤,当集群节点众多时,必然会加大搭建集群的复杂度和运维成本,因此官方提供了 redis-trib.rb的工具方便我们快速搭建集群。redis-trib.rb是采用 Ruby 实现的 redis 集群管理工具,内部通过 Cluster相关命令帮我们简化集群创建、检查、槽迁移和均衡等常见运维操作,使用前要安装 ruby 依赖环境


前提准备:


停掉所有的节点,然后清空数据,恢复成一个全新的集群,所有机器执行命令



pkill redis
rm -rf /data/redis_cluster/redis_6380/*
rm -rf /data/redis_cluster/redis_6381/*


全部清空之后启动所有的节点,所有机器执行



redis-server /opt/redis_cluster/redis_6380/conf/redis_6380.conf
redis-server /opt/redis_cluster/redis_6381/conf/redis_6381.conf


(1)安装命令:注意新版本redis不需安装,直接采用步骤(2)



yum makecache fast
yum install rubygems
gem sources --remove https://rubygems.org/
gem sources -a http://mirrors.aliyun.com/rubygems/
gem update –system
gem install redis -v 3.3.5




**先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里**

**深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/59dff19a7af15063c24f870c0334c3cd.png)
![img](https://img-blog.csdnimg.cn/img_convert/c91c1700003ef896f1cefad0e514a022.png)
![img](https://img-blog.csdnimg.cn/img_convert/3fe215129e0aa053a3ddd67ae527697c.png)
![img](https://img-blog.csdnimg.cn/img_convert/4d624210afcbd18c964c778a90cb7b81.png)
![img](https://img-blog.csdnimg.cn/img_convert/b85b3ba6910852cb2380c5ef2b7edee4.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

s_6381.conf

(1)安装命令:注意新版本redis不需安装,直接采用步骤(2)

yum makecache fast
yum install rubygems
gem sources --remove https://rubygems.org/
gem sources -a http://mirrors.aliyun.com/rubygems/
gem update –system
gem install redis -v 3.3.5

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-oogRgxjU-1715436758936)]
[外链图片转存中…(img-AjPegL0l-1715436758937)]
[外链图片转存中…(img-p1tA05b2-1715436758937)]
[外链图片转存中…(img-PBfcI4c5-1715436758937)]
[外链图片转存中…(img-NHxIj18o-1715436758938)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值