redis缓存数据库
redis默认开启了保护模式,只允许本地回环地址登录并访问数据库。
禁止protected -mode
protected-mode yes/no(保护模式,是否只允许本地访问)
(1)Bind:指定IP进行监听
vim /data/6379/redis.conf
bind 10.0.0.51 127.0.0.1
(2)増加requirepass {password}
vim /data/6379/redis.conf
requirepass 123456
部署redis
yum install redis
systemctl enable redis
systemctl start redis
# 编辑配置文件允许远程访问 和配置密码
vim /etc/redis.conf
bind 0.0.0.0
requirepass 123456
方法一:
[root@db03 ~]# redis-cli -a 123456
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> exit
方法二:
[root@db03 ~]# redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set a b
[rootadb0i src]# redis-cli -a 123 -h 10.0.0.51 -p 6379
10.0.0.51:6379> set b2
OK
持久化的几种方式
Redis 持久化拥有以下三种方式:
- 快照方式(RDB, Redis DataBase)将某一个时刻的内存数据,以二进制的方式写入磁盘;
- 文件追加方式(AOF, Append Only File),记录所有的操作命令,并以文本的形式追加到文件中;
- 混合持久化方式,Redis 4.0 之后新增的方式,混合持久化是结合了 RDB 和 AOF 的优点,在写入的时候,先把当前的数据以 RDB 的形式写入文件的开头,再将后续的操作命令以 AOF 的格式存入文件,这样既能保证 Redis 重启时的速度,又能简单数据丢失的风险。
RDB持久化
rdb持久化核心配置参数:
vim /data/6379/redis.conf
dir /data/6379
dbfilename dump.rdb
save 9001
save 30010
save 60 10000
redis启动时会读取dump.rdb文件
默认是开启rdb备份功能的 save “” 关闭redis的备份功能
配置分别表示:
900秒(15分钟)内有1个更改
300秒(5分钟)内有10个更改
60秒内有10000个更改
AOF 持久化(append-only log file)
记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。
AOF 文件中的命令全部以Redis协议的格式来保存,新命令会被追加到文件的末尾。
优点:可以最大程度保证数据不丢
缺点:日志记录量级比较大
AOF持久化配置
appendonly yes
appendfsync always
appendfsync everysec
appendfsync no
是否打开aof日志功能
每1个命令,都立即同步到aof
每秒写1次
写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof
vim /data/6379/redis.conf
appendonly yes
appendfsync everysec
常见问题面试:
redis 持久化方式有哪些?有什么区别?
rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能
aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog
数据类型:
string : 字符类型
Hash: 字典类型
List: 列表
Set: 结合
Sorted set: 有序集合
redis (Masterl-slave)
1.副本库通过slaveof 10.0.0.51 6379命令,连接主库,并发送SYNC给主库
2.主库收到SYNC,会立即触发BGSAVE,后台保存RDB,发送给副本库
3.副本库接收后会应用RDB快照
4.主库会陆续将中间产生的新的操作,保存并发送给副本库
5.到此,我们主复制集就正常工作了
6.再此以后,主库只要发生新的操作,都会以命令传播的形式自动发送给副本库
7.所有复制相关信息,从info信息中都可以查到,即使重启任何节点,他的主从关系依然都在
8.如果发生主从关系断开时,从库数据没有任何损坏,在下次重连之后,从库发送PSYNC给主库
9.主库只会将从库缺失部分的数据同步给从库应用,达到快速恢复主从的目的
主从数据一致性保证
min-slaves-to-write 1
min-slaves -max-lag
主库是否要开启持久化?
如果不开有可能,主库重启操作,造成所有主从数据丢失!
主从搭建
修改配置文件
vim /etc/redis.conf
bind 0.0.0.0 # 修改bind地址 0.0.0.0 允许其他ip连接redis
requirepass 123 # 添加密码配置
masterauth 123 # 添加密码配置
appendonly no # 关闭aof功能
# replica-announce-ip 5.5.5.5 # 如果主机有多个ip,指定redis绑定的ip地址
开启服务
systemctl start redis
从机redis开启从同步(临时配置,重启后失效)(修改配置文件永久生效 replicaof 192.168.3.86 6379)
redis-cli -p 6379 -a 123 SLAVEOF 192.168.3.86 6379
redis-cli -p 6379 -a 123 SLAVEOF 192.168.3.86 6379
从库会自动清理原有的数据保证主从数据一致,且主库挂了两个从库只可读,无写机器了。
查询主从状态
redis-cli -p 6379 -a 123 info replication
解除主从身份
redis-cli -p 6379 -a 123 SLAVEOF no one
redis-sentinel (哨兵)
1.监控
2、自动选主,切换 (6381 slaveof no one)
采用的是raft分布式一致性协议进行选主:数据节接近主,可以和大部分节点联系,少数服从多数。
3、重构主从关系
4、应用透明
5、自动处理故障节点
redis高可用sentinel集群搭建
Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案。实际上这意味着你可以使用Sentinel模式创建一个可以不用人为干预而应对各种故障的Redis部署。
作用:
1):Master状态检测
2):如果Master异常,则会进行Master-Slave切换,将其中一个Slave作为Master,将之前的Master作为Slave
3):Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master _redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换
工作方式
1):每个Sentinel以每秒钟一次的频率向它所知的Master, Slave以及其他Sentinel实例发送一个PING 命令
2);如果一个实例(instance)距高最后一次有效回复 PING俞令的时间超过down-after-milliseconds选项所指定的值,则这个实例会被 Sentinel标记为主观下线。
3):如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel要以每秒一次的频率确认Master的确进入了主观下线状态。
4):当有足够数量的 Sentinel (大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态,则Master会被标记为客观下线
配置从库
vim /etc/redis.conf
replicaof 192.168.3.86 6379 # 设置主节点ip和端口
bind 0.0.0.0 # 修改bind地址 0.0.0.0
requirepass 123 # 添加密码配置
masterauth 123 # 添加密码配置
# replica-announce-ip 5.5.5.5 # 如果主机有多个ip,指定redis绑定的ip地址
先搭建以上主从然后修改sentinel配置启动sentinel
vim /etc/redis-sentinel.conf
sentinel monitor mymaster 192.168.3.86 6379 2 # 这里的2 是有几台sentinel认为及切换
sentinel announce-ip 192.168.3.86 # sentinel节点的IP地址,sentinel可以部署在不同的服务器上
sentinel down-after-milliseconds mymaster 5000 # 5秒pin不通下线
sentinel auth-pass mymaster 123
启动:
systemctl restart redis-sentinel.service
停主库测试
[root@db01 ~]# redis-cli -p 6380 -a 123 shutdown
[root@db01 ~]# redis-cli -p 6381 info replication