Redis2

主从复制、哨兵模式,数据持久化机制与数据类型

> 环境配置
>
> ```
> host61:master服务器
>     -> 192.168.88.61
> host62:slave服务器
>     -> 192.168.88.62
> host63:slave服务器
>     -> 192.168.88.63
> ------------------------------------------------
> host67:master服务器
>     -> 192.168.88.67
> host68:slave服务器
>     -> 192.168.88.68
> host69:哨兵服务器
>     -> 192.168.88.69
> ------------------------------------------------
> host70:持久化
>     -> 192.168.88.70
> ```

#### 一、主从复制

> 前置准备:
>
> ```
> vm clone host6{1..3}
> for i in 6{1..3}
>   do
>     vm setip host$i 192.168.88.$i
>     ssh-copy-id root@192.168.88.$i
>   done

> [host]
> host61 ansible_ssh_host=192.168.88.61
> host62 ansible_ssh_host=192.168.88.62
> host63 ansible_ssh_host=192.168.88.63

> - hosts: all
>   tasks:
>     - yum:
>         name: redis
> - hosts: host61
>   tasks:
>     - shell: scp root@192.168.88.61:/etc/redis.conf /root/redis.test
> - hosts: host62,host63
>   tasks:
>     - copy:
>         src: /etc/redis.test
>         dest: /etc/redis.conf
> - hosts: all
>   tasks:
>     - service:
>         name: redis
>         state: started
>         enabled: yes
> ```

##### 一主多从

冷备

```shell
# 修改配置文件
+286 replicaof <masterip> <masterport>    # 配置主服务器的ip、端口
+293 masterauth <master-password>        # 配置登录主服务器的密码
# 重启服务后生效
```

热备

```shell
redis-cli -h 192.168.88.61        # 登录到redis命令行
replicaof 192.162.88.61 6379    # 加入从服务器
config rewrite                    # 写入硬盘
```

> 若服务器中含有数据,在加入从服务器后所有数据都将被清空,主服务器的数据自动备份到从服务器中

##### 链式复制

```shell
replicaof no one            # 恢复独立服务器
redis-cli -h 192.168.88.62    # 将63接入62从服务器,使63成为61的2级从服务器
```

> 如果63在第一次接入61前还有数据,接入61成为从服务器数据被清空,恢复独立服务器后这些被清空的源数据不会恢复 

##### 配置带验证的主从复制

```redis
# 配置61密码
192.168.88.61:6379> config get requirepass
1) "requirepass"
2) ""
192.168.88.61:6379> config set requirepass 1234
OK
192.168.88.61:6379> config rewrite            #上一步设置密码已经生效
(error) NOAUTH Authentication required.        #写入硬盘需要密码认证
192.168.88.61:6379> auth 1234
OK
192.168.88.61:6379> config rewrite
OK
192.168.88.61:6379> info replication        #查看从服务器
# Replication
role:master
connected_slaves:0                            #修改密码后slave也需要认证
...
----------------------------------------------------------------
# 配置62密码认证
192.168.88.62:6379> config get masterauth
1) "masterauth"
2) ""
192.168.88.62:6379> config set masterauth 1234
OK
192.168.88.62:6379> config rewrite
OK
或者修改配置文件,重启服务
```

#### 二、哨兵模式

> 前置准备:
>
> ```
> vm remove host6{1..3}
> vm clone host6{7..9}
> for i in 6{7..9}
>   do
>     vm setip host$i 192.168.88.$i
>     ssh-copy-id root@192.168.88.$i
>   done

> [host]
> host67 ansible_ssh_host=192.168.88.67
> host68 ansible_ssh_host=192.168.88.68
> host69 ansible_ssh_host=192.168.88.69

> - hosts: all
>   tasks:
>     - yum:
>         name: redis
>     - lineinfile:
>         path: /etc/redis.conf
>         regexp: "^bind .*$"
>         line: "bind 0.0.0.0"
>         insertafter: "^# bing 127.0.0.1"
>         state: present
>         backup: yes
>     - service:
>         name: redis
>         state: started
>         enabled: yes
> ```

配置哨兵模式

```shell
# 修改哨兵配置文件: /etc/redis-sentinel.conf
+15 bind 0.0.0.0                                        #配置ip
+21 port 26379                                            #配置端口号
+26 daemonize yes                                        #允许守护线程运行
+84 sentinel monitor myRedisGroup 192.168.88.67 6379 1    #声明服务器组
最后的1表示redis哨兵集群的投票过半数量,本行在生效后会被哨兵hash加密重写
端口默认加2万不用修改

# 重启哨兵服务生效
systemctl restart redis-sentinel.service

# 验证
关闭67redis节点
验证68redis节点是否接替master
重启67redis节点
验证67是否会加入68成为redis子节点
```

> 哨兵模式实现高可用,哨兵集群至少三台服务器

#### 三、数据持久化机制、数据类型

> 前置准备
>
> ```
> #创建redis服务器
> vm remove host6{7..9}
> vm clone redis70
> ```

RDB数据持久化方式之一,也是默认方式

```
+218~220 save 600 20        #由数据的存储频率动态地调整保存频率

+253 dbfilename dump.rbp    #保存文件名
+263 dir /var/lib/redis        #保存路径
```

数据恢复

systemctl stop redis会自动备份
在恢复备份前要先停止服务,否则恢复备份前数据会先被stop的保存机制覆盖掉

##### RDB优缺点

![](image-20250313153351001.png)

![image-20250313153253916](image-20250313153253916.png)

AOF日志文件,默认不启用

```
config get appendonly        #查看
config set appendonly yes    #启用
config rewrite                #保存
热启用,可以修改配置文件冷启用
文件第一行是加密行调用dump.rdb文件,使用cat查看文件导致全文乱码,只能使用tail从尾部看避开第一行加密
```

##### AOF优缺点

![image-20250313155626820](image-20250313155626820.png)

![image-20250313155700426](image-20250313155700426.png)

##### 数据类型

ex、px、nx、xx

字符

set、get、mset、mget、strlen、append、getrange、incr、incrby、decr、decrby

列表

lpush、rpush、lrange(lrevrange)、llen、lindex、lset、lpop、rpop

散列

hset、hmset、hget、hmget、hlen、hdel、hkeys、hvals、hgetall

无序

sadd、smembers、scard、sismember、srem、srandmember、spop、sinter、sunion、sdiff

有序

zadd、zcard、zrange、zrevrange、zscore、zrangebyscore、zincrby、zrank、zrevrank

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值