写入缓存策略有什么用-写入缓存关闭

文章导读

数据先写入缓存还是先写入数据库

在实际应用中,应该先将数据写入缓存,再异步将数据写入数据库。原因是缓存具有高速读写、降低数据库压力的优势,可以提高系统性能。但是缓存写入的数据可能会因为系统崩溃等原因丢失,因此需要在异步任务中将数据写入数据库进行持久化。这样可以在保证系统性能的同时,保证数据的可靠性和一致性。

Redis缓存穿透是指什么

我们通常使用Redis缓存+过期时间来加速网站的请求速度,减少后端数据库的访问压力。同时也可以保证缓存数据的及时更新。但是使用过程当中,就会产生缓存穿透等相关缓存问题。

缓存穿透是指当用户发送的HTTP请求访问到缓存系统时,按照请求的KEY去查询VALUE,当KEY对应的VALUE在缓存系统里面找不到的的时候,那么这些大量的用户请求就会访问数据库里面。就会造成后端很大的压力请求。

比如:缓存就类似于后面访问的防护墙,而防火墙在构建的时候可能会存在一些漏洞,就像古代城墙有时候都会有一些洞。而缓存穿透就是通过这些漏洞让大量的用户请求访问到我们这个数据库,导致我们数据库的压力急剧上升。

所以:请求没有命中到缓存数据,从而失去缓存的意义直接去查询数据库了。但数据库抗不住太多的请求,而导致系统崩溃

缓存使用原理

1、先从缓存中取数据,如果能取到,直接返回数据给用户。这样就不用放入请求到数据库,从而减轻数据库的压力。

2、如果缓存中没有数据,才会访问数据库。

缓存穿透的造成原因

缓存穿透的问题,一般在普通业务下请求量少是不存在的。肯定是再大并发情况下。因为你请求过多了,访问的key的类型也多,但是缓存系统,并不能够完全包含所以key的访问类型。依此为前提,原因如下:

1、恶意攻击,猜测你的key命名,然后估计使用一个你缓存中不会有的key进行访问。

2、第一次数据访问,这时缓存中还没有数据,则并发场景下,所有的请求都会压到数据库。

3、数据库的数据也是空,这样即使访问了数据库,也是获取不到数据,那么缓存中肯定也没有对应的数据。这样也会导致穿透。

解决方案

1、在web服务器启动时,提前将有可能被频繁并发访问的数据提前写入缓存。规避大量的请求访问到数据库。

2、规范key的命名,并且统一缓存查询和写入的入口。这样,在入口处,对key的规范进行检测。保证恶意的key被拦截。

3、缓存层缓存null并设定过期时间,为了避免内存耗尽,在后台设置主动删除空值,并把真实的缓存值存进去。 不管数据库中是否有数据,都在缓存中保存对应的key,null值即可。这样是为了避免数据库中没有这个数据,导致的频繁穿透缓存对数据库进行访问。

4、采用布隆过滤器,可以先判断key值是否存在,如果不存在,则不访问redis,那这样就可以拦截大量的请求,布隆过滤器恰好就是这样设计的。

如果有感悟,欢迎关注额

固态硬盘写入缓存和不关闭的区别

固态硬盘缓存的比不带缓存的快很多,缓存越大对速度的改善越快。缓存的意思就是刚用过的数据,马上再用或短时间内再用,会非常快,瞬间读取数据,而无缓存的固态硬盘需要重新读取数据。为了减少固态硬盘的写入数据量,不要将电脑的虚拟内存放到固态硬盘上,不要将下载软件的存储目录设置为固态硬盘,尤其是下载电影这类大数据量的文件。

移动硬盘要启用写入缓存功能嘛

有必要开启。在一定程度上提高硬盘的读写速度,开启该功能,甚至少有磁盘碎片产生,但有优点必然有缺点,硬盘写入缓存的知名缺点就是突然断电的计算机,不能很好的保证数据的完整性。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2024年4月2日
下一篇 2024年4月3日

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系我们,一经查实,本站将立刻删除。