Skip to main content

Redis

1.主从部署

127.0.0.1:6379> INFO replication
# Replication
role:master ##redis默认master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first

配置slave加入master

在slave上设置master的IP和端口,4.0版之前的指令为slaveof REPLICAOF 10.51.8.120 6379 #仍可使用SLAVEOF MasterIP Port

SLAVEOF 10.51.8.120 6379
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> SLAVEOF 10.51.8.120 6379
OK
127.0.0.1:6379> CONFIG SET masterauth 123456 #在slave上设置master的密码,才可以同步
OK


127.0.0.1:6379> INFO replication
127.0.0.1:6379> INFO replication
# Replication
role:slave ##看角色
master_host:10.51.8.120
master_port:6379
master_link_status:up ##看从节点是否启动,否则可能是仅允许本地访问
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:15
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

主节点上查看状态


127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.51.8.121,port=6379,state=online,offset=1382,lag=1 ###slave节点
master_repl_offset:1382
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:1381

1. 以下是开启 RDB 持久化的配置项示例:

如果你希望将 Redis 从节点一直保持为从节点,而不再自动切换为主节点, 你可以在从节点的配置文件中设置 slave-read-only yes。 这样设置后,从节点将不会接受外部写操作,并始终保持从节点的身份。 请注意,在设置 slave-read-only yes 后,从节点将无法处理写操作, 包括对数据的修改和写入。如果你需要对从节点进行写操作,你需要将其切换回主节点或者进行一些其他的配置更改。

要在 Redis 中启用持久化功能,你需要在配置文件中进行相应的设置。通常,配置文件位于/etc/redis/redis.conf 或 /usr/local/etc/redis.conf

/etc/redis/redis.conf 或 /usr/local/etc/redis.conf。

save 60 1 # 在60秒内如果至少发生1次写操作,则触发快照保存
save 300 10 # 在300秒内如果至少发生10次写操作,则触发快照保存
save 3600 10000 # 在3600秒内如果至少发生10000次写操作,则触发快照保存

dbfilename "dump.rdb" # 快照文件名,默认为 dump.rdb
dir "/var/lib/redis" # 快照文件存储路径,默认为 Redis 启动目录
#############
save 900 1:表示900 秒内如果至少有 1 个 key 的值变化,则保存
save 300 10:表示300 秒内如果至少有 10 个 key 的值变化,则保存
save 60 10000:表示60 秒内如果至少有 10000 个 key 的值变化,则保存

手动触发   手动触发Redis进行RDB持久化的命令有两种:

  1、save

  该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。

  显然该命令对于内存比较大的实例会造成长时间阻塞,这是致命的缺陷,为了解决此问题,Redis提供了第二种方式。

  2、bgsave

  执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体操作是Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短。

  基本上 Redis 内部所有的RDB操作都是采用 bgsave 命令。

  ps:执行执行 flushall 命令,也会产生dump.rdb文件,但里面是空的.

2. 要开启 AOF 持久化,你可以进行如下配置:

appendonly yes              # 开启 AOF 持久化,默认为 no
appendfilename "appendonly.aof" # AOF 文件名,默认为 appendonly.aof
appendfsync everysec # 每秒钟将写入操作同步到磁盘一次

3. 主从优化

如果你希望从节点在重启后保持原有的状态,即继续作为主节点的从属节点,并复制主节点的数据,你可以在从节点的配置文件中设置 slaveof 指令来指定它的主节点地址。 这样从节点在重启时会直接连接指定的主节点,而不会尝试重新选举。

slaveof 10.51.8.120 6379
masterauth 123456
requirepass 123456

----获取持久化数据的路劲

127.0.0.1:6379> config get dir
1) "dir"
2) "/var/lib/redis"
127.0.0.1:6379>

------删除主从同步 #取消复制,在slave上执行REPLIATOF NO ONE,会断开和master的连接不再主从复制, 但不会清除slave 上已有的数据

SLAVEOF NO ONE

2.redis-dump

实现对单个库的备份

redis-dump -u 10.0.8.11:6379 -a 'xxxxxxxxxx' -d  0  > db_db0.json
cat db_db0.json | redis-load -u 10.0.8.11:6379 -a 'xxxxxxxxxxxxxxxx' -d

3.相关命令

登录命令

redis-cli -h 192.168.1.x -p 6379 -a xxxxx

从节点执行slaveof no one命令断开与主节点的复制关系

127.0.0.1:6379> slaveof no one
OK
127.0.0.1:6379> INFO replication
# Replication
role:master #确认当前角色