03Redis主从复制和哨兵
1. 高级命令和特性
- 返回满足的所有键(可以模糊搜索)
- exists:是否存在指定的key
- expire:设置某个key的过期时间,使用ttl查看剩余时间(以秒为单位)
- persist:取消过期时间
- select:选择数据库 数据库0-15(一共16个数据库)默认进入0数据库
- move [key] [数据库下标] 将当前数据库中的key 转移到其他数据库中
- randomkey:随机返回数据库里的一个key
- rename:重命名key
- echo:打印命令
- dbsize:查看数据库key的数量
- info:获取数据库信息
- config get:实时转储收到的请求(返回相关的配置信息)
config get * - flushdb:清空当前数据库 flushall 清空所有数据库
redis分为16个区域是逻辑上的划分,数据都可以存在第0个数据库,数据库大小可以动态的规划
2. redis的安全性
因为redis的速度很快,一台性能较好的服务器下,一个用户在一秒钟内可以进行15W次的密码尝试,因此就需要强大的密码来防止暴力**。
1. 用vim对redis.conf文件进行编辑,找到
# requirepass foobared
requirepass 密码
重启服务器:pkill redis-server
再次进行redis客户端时:auth 密码
或者直接登录授权:
/usr/local/redis/bin/redis-cli -a 密码
3. 主从复制
- 主从复制:
a. Master可以拥有多个Slave
b. 多个slave可以连接同一个master外,还可以连接到其他的slave
c. 主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
d. 提供系统的伸缩性 - 主从复制过程:
a. slave与master建立连接,发送sync同步命令
b. master会开启一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存
c. 后台完成保存后,就将文件发送给slave
d. slave将此文件保存到硬盘上 - 主从复制配置:
a. clone服务器之后修改slave的IP地址
b. 修改配置文件:redis.conf
c. 第一步:slaveof <master><mastport>
d. 第二步:masterauth <master-password>
使用info查看role角色可以知道是主从服务器
如果是从服务器输入info命令之后会看见
role表明服务器身份是slave
如果是主服务器
如果连不上主服务器,查看一下是否是主服务器防火墙未关闭 - 设置redis日志
在redis.conf文件中加入:
loglevel notice#日志等级
logfile “/usr/local/redis/log/redis.log” - 将redis、redis-3.0.0等文件复制到从服务器
scp -r 要复制的文件 目标机器IP:/放文件的位置
-r表示递归创建
4. 哨兵
有了主从复制的实现后,我们如果想对主服务器进行监控,redis就提供了一个哨兵机制,redis2.8版本后的哨兵才开始稳定起来。
1. 哨兵主要功能:
a. 监控主数据库和从数据库是否正常运行
b. 主数据库出现故障时,可以自动将从数据库转为主数据库,实现自动切换
2. 实现步骤:
a. 在其中一台从服务器配置sentinel.conf
copy文件sentinel.conf到/usr/local/redis/etc中
修改sentinel.conf文件
sentinel monitor mymaster 192.168.1.174 6379 1 #名称 IP 端口 投票选举次数
sentinel down-after-milliseconds mymaster 5000 #默认1秒检测一次,这里配置超时5000毫秒为宕机
sentinel failover-timeout mymaster 900000(超时时间)
sentinel parallel-syncs mymaster 2 (有多少个从节点)
sentinel can-failover mymaster yes
b. 启动sentinel哨兵
/usr/local/redis/bin/redis-server /usr/local/redis/etc/sentinel.conf –sentinel &
&代表后台启动
c. 查看哨兵相关信息命令
/usr/local/redis/bin/redis-cli -h 192.168.1.175 -p 26379 info Sentinel
d. 关闭主服务器查看集群信息
/usr/local/redis/bin/redis-cli -h 192.168.1.174 -p 6379 shutdown
sentinel.conf中添加dir:dir /usr/local/redis/etc
1:代表只要有一个投票选举,就让被投的机器成为master