Redis学习2

Redis主从复制

主要作用有:

  1. 数据冗余:数据的热备份
  2. 故障恢复:当主节点出现问题时,可以由从节点提供服务
  3. 负载均衡:在主从复制的基础上,配合读写分离,可以主由节点提供写服务,从节点读服务,分担服务器负载
  4. 高可用的基石:主从复制还是哨兵和集群能实施的基础

配置

只配置从库,不用配置主库,Redis默认自己是主库

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:8ca8b9b49744c816d7c5e4b756c6d98bea328b77
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

windows系统下多开redis配置

复制几份conf文件,修改端口号、日志输出路径、dump.rdb文件名

配置主从

主机不用管,配置从机

127.0.0.1:6380> slaveof 127.0.0.1 6379
OK
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:70
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b0a2083de25acc9a31db695b7755cd0314364df0
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:70
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:70
##############################################################
# 主机信息
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=182,lag=0
master_replid:b0a2083de25acc9a31db695b7755cd0314364df0
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:182
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:182
##############################################################
# 配置从机2
127.0.0.1:6381> slaveof 127.0.0.1 6379
OK
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=350,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=350,lag=1
master_replid:b0a2083de25acc9a31db695b7755cd0314364df0
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:350
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:350

细节

主机可以写,从机只能读

重新连接的时候,从机会进行全量复制,所以不用担心数据不同步问题,正常运行状态是增量复制

Slaveof No One 可以使自己变成主机

哨兵模式

配置哨兵文件sentinel.conf

#sentinel monitor 被监视的名称(随意) host port 是否投票
sentinel monitor myredis 127.0.0.1 6379 1
############################################
# 启动哨兵监视
redis-server sentinel.conf --sentinel


如果主机down了,哨兵会自动选一个从机变成主机,如果主机又回来了,主机自动变成从机

优点

  1. 哨兵集群,基于主从复制模式,所有的主从模式配置的优点,他都有

  2. 主从可以切换,故障可以转移,系统的可用性就会更好

  3. 哨兵模式就是主从模式的升级

缺点

  1. Redis不好在线扩容了,集群容量一旦到达上限,在线扩容就十分麻烦
  2. 实现哨兵模式的配置其实很麻烦的

Redis缓存穿透和雪崩

缓存穿透(查不到)

大量访问缓存层没有的东西,频繁的访问数据库,导致服务器瘫痪。

解决方案

布隆过滤器:对所有可能查询的参数以Hash形式存储,在控制层先校验,不符合则丢弃

缓存空对象

缓存击穿(量太大,缓存过期!)

大量访问集中在一个点上,频繁的访问,导致服务器崩溃。

举例:微博热点,缓存了60秒,60秒之后过期了,61秒的时候,1秒中的时间,大量的访问冲击到数据库。

解决方案:

热点数据永不过期

加护斥锁,限制访问数据库

缓存雪崩

Redis宕机! 停电

解决方案:

Redis高可用,多设几台,异地多活

限流降级

数据预热


视频学习资料:B站 狂神说

https://www.bilibili.com/video/BV1S54y1R7SB?p=34

原文地址:https://www.cnblogs.com/huacha/p/13991455.html