redis缓存数据库学习简记

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值