Redis扩展

Redis扩展

Redis发布订阅

Redis发布订阅是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

**模型介绍:**消息发布者将消息内容发送到队列中,消息订阅者从队列中获取消息。

命令

在这里插入图片描述

测试

订阅端:

127.0.0.1:6379> SUBSCRIBE ztx    #订阅我的频道
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "ztx"
3) (integer) 1

1) "message"
2) "ztx"
3) "hello"

1) "message"
2) "ztx"
3) "time to lunch"

发送端:

127.0.0.1:6379> PUBLISH ztx "hello"
(integer) 1
127.0.0.1:6379> PUBLISH ztx "time to lunch"
(integer) 1
127.0.0.1:6379> 
主从复制
概念

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follow);数据的复制是单向的,只能由主节点到从节点,master以写为主,slave以读为主。

主从复制的主要作用:

  • 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式
  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,从节点提供读服务,分担服务器负载。

因为会宕机,所以使用一台redis是万万不能的

环境配置

只配置从库 不配置主库

127.0.0.1:6379> info replication   #查看当前库的信息
# Replication
role:master   #角色
connected_slaves:0  #没有从机
master_replid:41f83498335ce9145c9c6c76174ca7afb20b5e8e
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

因为没有多套服务器,所以我使用了在同一服务器下用四套配置文件启动redis 使用cp命令来拷贝配置文件 然后再具体地修改拷贝出来地配置文件

查看redis开启情况

[root@rope bin]# ps -ef|grep redis
root      2228     1  0 12:23 ?        00:00:01 redis-server 127.0.0.1:6379
root      2234     1  0 12:24 ?        00:00:00 redis-server 127.0.0.1:6380
root      2240     1  0 12:24 ?        00:00:00 redis-server 127.0.0.1:6381
root      2270  2146  0 12:42 pts/1    00:00:00 grep --color=auto redis
一主二从

默认情况下,每台Redis服务器都是主节点;一般配置从机

认老大!一主(79)二从(80 81)

127.0.0.1:6381> SLAVEOF 127.0.0.1 6379
OK

细节

主机可以写,从机不能写只能读!主机中的所有信息和数据,都会自动被从机保存。

复制原理

slave启动成功后连接到master后会发送一个sync同步命令

master接到命令,启动后台地存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕后,master将传送整个数据文件到slave,并完成一次完全同步。

只要是重新连接到master,一次完全同步将被自动执行。

哨兵模式

自动选举老大

监控主机是否故障,如果故障了根据投票数自动将库转换为主库。

假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现场称为主管下线,当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。

缓存穿透与雪崩
缓存穿透

概念

用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询,发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求持久层数据库,这会给数据库造成很大压力,这时候相当于出现了缓存穿透。

解决方案

布隆过滤器

这种数据结构对所有可能查询的参数以hash形式存储,在控制层先进性校验,不符合则丢弃,从而避免了对底层存储结构的查询压力。

缓存击穿

概念

缓存击穿是指一个key非常热点,在不停的扛着大并发,大并发集中于这一点进行访问,当这个key失效的瞬间,持续的大并发就穿破缓存,直接请求数据库。

解决方案

设置热点数据永不过期

加互斥锁

分布式锁:使用分布式锁,保证对于每个key同时只有一个线程去查询后端服务,其他线程没有获得分布式锁的权限,因此只需等待即可。这种方式将高并发的压力转移到了分布式锁,因此对分布式锁的考验很大。

缓存雪崩

概念

缓存雪崩是指在某一时段,缓存集中过期失效

解决方案

加redis服务器

降流降级

当缓存集体失效后,通过加锁或者队列来控制数据库写缓存的线程数量

数据预热

这种方式将高并发的压力转移到了分布式锁,因此对分布式锁的考验很大。

缓存雪崩

概念

缓存雪崩是指在某一时段,缓存集中过期失效

解决方案

加redis服务器

降流降级

当缓存集体失效后,通过加锁或者队列来控制数据库写缓存的线程数量

数据预热

模拟,设置不同的过期时间,让缓存失效时间尽量均匀。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值