汕头企业网站推广技巧,临沂做网站推广的公司哪家好,wordpress 插件经验,新闻类网站开发多久文章目录 一、Redis缓存的介绍二、Redis缓存问题2.1 缓存穿透2.2 缓存击穿2.3 缓存雪崩2.4 双写一致性2.5 缓存持久化RDBAOF 三、缓存数据管理3.1 数据过期策略3.2 数据淘汰策略 一、Redis缓存的介绍
我们在日常的代码编写中比较少使用到Redis#xff0c;但是如果涉及到了比较… 文章目录 一、Redis缓存的介绍二、Redis缓存问题2.1 缓存穿透2.2 缓存击穿2.3 缓存雪崩2.4 双写一致性2.5 缓存持久化RDBAOF 三、缓存数据管理3.1 数据过期策略3.2 数据淘汰策略 一、Redis缓存的介绍
我们在日常的代码编写中比较少使用到Redis但是如果涉及到了比较大型的项目常常避不开Redis这一项技术那么在什么样的场景需要使用Redis呢。首先我们得明白Redis是一个高性能得键值数据库我们使用它得原因很简单就是因为快。这个问题在大并发高负载的网站中必须考虑。redis数据库中的所有数据都存储在内存中。由于内存的读写速度远快于硬盘因此Redis的的的在性能上对比其他基于硬盘存储的数据库有非常明显的优势。并且除了性能方面的优势Redis作为数据库的缓冲可以很好的解决并发问题避免了数据库因为过多的并发请求而崩溃。所以其实在项目较大需要多次请求的场景下我们都可以考虑使用Redis。本文是根据黑马教程学习中所编写的引用了黑马程序员视频中的课件图片。
二、Redis缓存问题
在Redis缓存正常运行的情况下它的运行流程如
2.1 缓存穿透
在缓存这正常流程中我们可能会遇到缓存穿透问题也就是我们去申请查询一个不存在的数据 那么由于我们无法在Redis中命中我们就会直接到数据库去申请那么每次查询不存在的数据都会直接向数据库发出请求这就会对数据库造成很大的压力。 为了解决缓存穿透问题常见的有几种方案
解决方案1将空数据缓存这种方式简单但会消耗内存并且有可能造成不一致的问题解决方案2使用布隆过滤器。 那么布隆过滤器是如何实现帮助我们过滤的呢 布隆过滤器中有一个bitmap也就是以bit为单位的数组每个单元的值只能为0或者1,然后我们需要明白布隆过滤器也是需要初始化的也就是上图中缓存预热时预热布隆过滤器。那么存储时我们会对数据的主键进行多个hash函数计算将计算出来的值对应的bitmap中的单元值改为1查询数据判断主键经过多个hash函数计算后的单位位是否位1如果是则数据库中含有该元素。 但是需要明白的是由于有多个hash函数一个主键如id1对应的可能是好几个bitmap单元位必须全部为1的情况下才说明含有该元素。也有可能会出现误判的情况如 在这种情况下bitmap数组越大误判的概率就越低。
2.2 缓存击穿
缓存击穿问题其实是当某一个时刻key过期并且在这个时刻发送过来了大量的并发请求这些请求就有可能把DB击垮。 解决的方案有两种互斥锁和逻辑过期 互斥锁解决方案具有强一致性能差的特点 逻辑过期则是高可用性能优但是可能会出现线程1这样的返回旧数据的情况可以根据是否需要保证数据的强一致性来选择解决方案。
2.3 缓存雪崩
缓存雪崩就是在一段时间内大量缓存key失效或者Redis宕机导致大量请求抵达数据库造成压力。 给不同Key添加随机值不用说Spring cloud gateway也就是网关我们可以通过在后端的SSM配置中的网关来限流nginx的限流配置也十分简单这两个方案就不多讲了。其中限流策略实用性较高 重点需要讲的是Redis集群中的哨兵模式和集群模式 Redis提供了哨兵Sentinel机制来实现主从集群的自动恢复监测方式如下 在知道了基本的监测方式后Redis集群还可能出现脑裂问题 当网络恢复后该master就会变成后半部分集群的slave会清空数据后与后半集群的master数据同步那么刚刚写入的数据就丢失了为了解决这个问题我们需要设置当你想要写入数据master必须含有一个slave节点这样就可以避免脑裂问题。
2.4 双写一致性
这个问题需要考虑的是自己的业务背景是一致性要求高还是允许延迟一致 其中强一致性中的两个锁的方式如下
2.5 缓存持久化
在Redis中提供了两种持久化方式1、RDB 2、AOF
RDB
RDB也就是Redis Database Backup fileRedis数据备份文件也就是Redis数据快照把内存中的所有数据记录到磁盘之中当Redis实例故障重启之后从磁盘读取快照文件恢复数据。 RDB的实现原理也就是基于页表实现内存的的读取如果不明白什么是页表可以参考我之前发的文章操作系统基础。
AOF
AOF全称也就是Append Only File追加文件AOF文件可以看做是命令日志文件。我们可以学习一下AOF如何开启和配置 Redis中的AOF还具有重写功能具体的使用配置可以参照下图 两者区别
三、缓存数据管理
3.1 数据过期策略 而这种策略可以分为
惰性删除设置key过期时间过后不去管它如果当需要该key时再检查若过期就删除反之返回key。这种方式的优点是对CPU比较友好不会浪费资源检查。 缺点对内存不友好如果没使用就永远不会释放定期删除每隔一段时间定期检查删除过期的key
3.2 数据淘汰策略
数据淘汰的情况发生再当内存不够用时我们需要决定淘汰那些数据来存放新数据其中有几种不同的删除策略如下图 在了解了数据淘汰策略之后我们肯定就需要了解使用这些策略的场景。