0
点赞
收藏
分享

微信扫一扫

MFC实现ini配置文件的读取

哈哈我是你爹呀 2024-04-27 阅读 8
1.什么是缓存击穿?

客户端恶意访问一个不存在的数据,从而造成穿透缓存,请求直接到达数据库,频繁的发送这一类的请求,直接查询数据库,数据库的压力变大。

1.1如何解决缓存击穿呢?

1)使用布隆过滤器:

作用:判断一个数据可能存在或者一定不存在。

原理:位数组+hash函数;当一个元素加入集合后,把位数组中的一些k点,设置位1,检索时,看这些点是不是1就知道集合中有没有。只有这些点中有一个0,就是一定不存储;如果都是1则可能存在

2)redis实现布隆过滤器

(1)上传bloom过滤器到redis服务端

(2)解压:

#解压
tar -zxf RedisBloom-1.1.1.tar.gz
#进入解压文件
cd RedisBloom-1.1.1/

(3)编译

#安装gcc环境
yum install -y gcc-c++
#make命令编译当前插件
make

(4)上传到docker

(5)修改redis的核心配置文件

(6)初始化bloom过滤器:bf.reserve key x y

(7)往布隆过滤器添加元素:bf.add key value

(8)判断是否存在:bf.exists key value

2.缓存击穿

在某个热点缓存失效后,大量的请求访问该数据,在第一个请求重建缓存回来之前,大量的请求发现缓存失效,都会区尝试重建缓存,导致数据库压力增加

2.1如何解决

设置这个key为永不过期

3.缓存雪崩

大量的缓存一起失效,导致大量的请求同时到达数据库,增加了数据库的压力

3.1如何解决

再我们一开始建立缓存的时候就采用固定数+随机数的方式来打散key的过期时间

4.缓存预热

在项目开发过程中,我们根据经验去判断,哪些key的热点数据,可以提前存到缓存服务器中,这样对于高并发的情况,可以避免直接访问数据库,对数据库造成压力。

举报

相关推荐

0 条评论