1.安装docker
安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
若出现如下报错
problem with installed package buildah-1.15.1-2.module_el8.3.0+475+c50ce30b.x86_64
- package buildah-1.15.1-2.module_el8.3.0+475+c50ce30b.x86_64 requires runc >
则需要安装较高版本containerd.io
dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
又执行错误
problem with installed package podman-2.0.5-5.module_el8.3.0+512+b3b58dca.x86_64
podman冲突问题
执行如下命令
yum erase podman buildah
此时大概率没有问题了 执行第一个命令
启动docker
systemctl start docker
拉取启动redis
拉取redis
sudo docker pull redis
查看镜像是否拉取成功:docker images
如图所示已经成功
前期准备工作还差一个redis的配置文件
http://www.redis.cn/download.html
到这个网址上下载最新的 解压之后
修改redis.conf
bind 127.0.0.1 #注释掉这部分,使redis可以外部访问
daemonize no#用守护线程的方式启动
requirepass 你的密码#给redis设置密码
appendonly yes#redis持久化 默认是no
tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
将修改好的配置文件上传的centos中,路径如下
/data/redis/data/
启动
sudo docker run -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
执行docker ps 查看
此时redis已经启动 我们先简单做个测试
进入容器内部
docker exec -it redis /bin/bash
输入 redis-cli
如下图所示增加key为username value为testname
可以正常查找出来
引入布隆过滤器
布隆过滤器是为了防止恶意攻击造成缓存击穿
简单讲解下缓存击穿:比如按ID查找商品,一般来讲ID肯定是一个正整数或者UUID形式,但如果有人恶意攻击,使用ID=-1来进行查找,如果在不加布隆过滤器的情况下,redis找不到ID=-1的数据就去访问数据库,这样造成了大量的无用访问,从而打穿数据库。
思考:如果不用布隆过滤器可不可以解决这个问题
答案是可以的,我们假设允许第一次的ID=-1进入到了数据库中查找,然后数据库查不到则让redis新建一个key为-1的ID value为null 这样下次再访问就不会再访问数据库了
布隆过滤器事先设定了一些key 命令是bf.add
拉取镜像
docker pull redislabs/rebloom
启动
docker run -tid -p 6379:6379 --name redis-bloom --restart=always redislabs/rebloom:latest
进入容器预设一些值进去
docker exec -it redis-bloom /bin/bash
bf.add url baidu.com
如下图所示
思路:
事先把存在的key都放到redis的Bloom Filter 中,他的用途就是存在性检测,如果 BloomFilter 中不存在,那么数据一定不存在
https://blog.csdn.net/qq_17623363/article/details/106418353