redis-高级特性

本文详细介绍了Redis的主从复制特性,包括配置、工作原理、只读从服务器以及注意事项。此外,讨论了Redis的两种持久化方式:RDB快照和AOF日志,分析了各自的优缺点,并提供了选择策略。最后,探讨了Redis的内存优化和如何利用Redis实现分布式锁,包括单机和集群环境下的实现方案。
摘要由CSDN通过智能技术生成

1. 主从复制

1.1 主从复制的特点

redis的主从复制配置十分简单,它可以使从服务器是主服务器的完全拷贝,有以下几个特点:

  1. master可以拥有多个slave
  2. 多个slave除了可以连接同一个master外,还可以连接到其他slave
  3. 使用异步复制。主从复制不会阻塞master,向slave同步数据时,master可以继续处理client的请求
  4. 可以提高系统的扩展性,如使用多个从服务器来作为只读处理器(如繁重的排序操作可以放到从服务器去做),也可以简单的用来做数据冗余

1.2 如何配置主从服务器

  1. 配置slave服务器很简单,只需要在slave端的redis.conf文件中添加以下配置
slaveof <masterip> <masterport>
# 如果 master 需要密码认证,就在这里设置
masterauth <master-password>

另外你也可以调用SLAVEOF命令,主服务器就会开始与从服务器同步。
2. 然后可通过role命令(或者info命令)查看结果
(slave服务运行在6378端口,master服务运行在6379端口)

[root@VM_0_11_centos src]# ./redis-cli -h 127.0.0.1 -p 6378
127.0.0.1:6378> role
1) "slave"
2) "127.0.0.1"
3) (integer) 6379
4) "connected"
5) (integer) 15

此时可以在master设置key,在slave上即可get到该key值

1.3 Redis主从复制是如何工作的

       如果你设置了一个从服务器,在连接时它发送了一个SYNC命令,不管它是第一次连接还是再次连接都没有关系。然后主服务器开始后台存储,并且开始缓存新连接进来的修改数据的命令。当后台存储完成后,主服务器把数据文件发送到从服务器,从服务器将其保存在磁盘上,然后加载到内存中。然后主服务器把刚才缓存的命令发送到从服务器。这是作为命令流来完成的,并且和Redis协议本身格式相同。
       你可以通过telnet自己尝试一下。在Redis服务器工作时连接到Redis端口,发送SYNC命令,会看到一个批量的传输,并且主服务器接收的每一个命令都会通过telnet会话重新发送一遍。
       当主从服务器之间的连接由于某些原因断开时,从服务器可以自动进行重连接。当有多个从服务器同时请求同步时,主服务器只进行一个后台存储。
       当连接断开又重新连上之后,一般都会进行一个完整的重新同步,但是从Redis2.8开始,重新连接之后可以从中断处继续进行复制,而不必重新同步。

1.4 只读从服务器

       从Redis 2.6开始,从服务器支持只读模式,并且是默认模式。向从服务器写入命令会报错误:

(error) READONLY You can't write against a read only slave.

这个行为是由Redis.conf文件中的slave-read-only 参数控制的,可以在运行中通过CONFIG SET来启用或者禁用。
       只读的从服务器会拒绝所有写命令,所以对从服务器不会有误写操作。但这不表示可以把从服务器实例暴露在危险的网络环境下,因为像DEBUG或者CONFIG这样的管理命令还是可以运行的。不过你可以通过使用rename-command命令来为这些命令改名来增加安全性。
       注意只读限制还可以被还原,使得从服务器还可以进行写操作。虽然当主从服务器进行重新同步或者从服务器重启后,这些写操作都会失效,还是有一些使用场景会想从服务器中写入临时数据的,但将来这个特性可能会被去掉。

1.5 注意

  • 在做主从同步时ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值