redis主从,哨兵,VM机制,io多路复用机制的应用和原理

本文详细探讨了Redis的虚拟内存(VM)机制,包括两种工作机制:阻塞式和多线程式。此外,文章阐述了Redis如何通过IO多路复用实现单线程下的高并发,并讨论了Redis与memcached的区别。还介绍了Redis的缓存策略如雪崩、穿透、击穿的解决方案。最后,文章对比了Redis的主从复制、哨兵系统以及过期键删除策略,强调了Redis在数据安全性和性能上的平衡策略。
摘要由CSDN通过智能技术生成

edis之vm机制

Redis的VM(虚拟内存)机制就是暂时把不经常访问的数据(冷数据)从内存交换到磁盘中,从而腾出宝贵的内存空间用于其它需要访问的数据(热数据),这样就可以避免因为内存不足而造成访问速度下降的问题。需要特别注意的是Redis并没有使用OS提供的Swap,而是自己实现。

Redis为了保证查找的速度,只会将value交换出去,而在内存中保留所有的Key。所以它非常适合Key很小,Value很大的存储结构。如果Key很大,value很小,那么vm可能还是无法满足需求。

redis规定同一个数据页面只能保存一个对象(value),但一个对象可以保存在多个数据页面中。

 

Redis的vm两种工作机制

Vm-max-threads=0 

数据换出:主线程定期检查使用的内存大小,如果发现内存超出最大上限,会直接以阻塞的方式,将选中的对象 换出 到磁盘上(保存到文件中),并释放对象占用的内存,此过程会一直重复直到下面条件满足任意一条才结束:

1. 内存使用降到最大限制以下。

2. 设置的交换文件数量达到上限。

3. 几乎全部的对象都被交换到磁盘了

       数据换入:当有client请求key对应的value已被换出到磁盘中时,主线程会以阻塞的方式从换出文件中加载对应的value对象,加载时此时会阻塞所有client,然后再处理client的请求。这种方式会阻塞所有的client。

vm-max-threads>0

数据换出:都一样

数据换入:当有client请求key的对应的value已被换出到磁盘中时,主线程先阻塞当前client,然后将加载对象的信息放到一个队列中,让工作线程去加载,此时进主线程继续处理其他client请求。加载完毕后工作线程通知主线程,主线程再执行被阻塞的client的命令。这种方式只阻塞单个client。

Redis缓存雪崩、缓存穿透、缓存击穿

缓存雪崩:

     在同一时刻出现大量的缓存过期,所有原来本应该访问缓存的请求都去查询数据库,对数据库造成很大压力,严重的会宕机从而造成系统崩溃。

解决方法:

1.   设置缓存失效时间分散开   

2.   使用加锁(最多的解决方案)或者队列的方式来保证不会大量的线程对数据库一次性进行读写,从而避免缓存失效时大量的并发请求落到底层存储系统上。

        Setnx加锁,使用set类型设置,它支持复杂的数据结构,具体自己百度。

缓存穿透:

       缓存穿透是指用户恶意攻击,查询在数据库没有,缓存中也没有数据。这样导致用户每次查询在缓存中找不到,还需要去数据库再查询一遍,然后返回空。恶意攻击导致数据库压力过大。

解决方法:

  1. 如果一个查询返回的数据为空,我们任然把这个空结果进行缓存,设置它过期时间会很短,最长不超过5分钟,这样下次继续访问就不会再查询数据库。
  2. 布隆过滤器

缓存击穿:

       是指缓存中没有但数据库中有数据(一般是缓存时间到期),这时由于并发用户特别多,同时去数据库读取数据,引起数据库压力瞬间增大,造成过大压力。

解决方法:

  1. 加锁
  2. 定时任务主动刷新缓存

缓存预热

       将热点数据先加载到缓存中,例如:秒杀时,先将商品信息加载到缓存中。

缓存降级

       当访问量剧增,服务出现问题,非核心服务影响到核心服务性能时,将一些不太重要的服务降级,弃车保帅。

Redis和memcached有什么区别

  1. 存储方式</
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值