IP
mysql: 172.18.12.2 ~ 12.9
redis: 172.18.12.10 ~172.18.12.19
/usr/local/software
mkdir redis
mkdir 6380
/usr/local/software/redis/6380
[root@localhost redis]# cd 6380
[root@localhost 6379]# mkdir conf
[root@localhost 6379]# mkdir data
docker run -it \
--name redis_6380 \
--privileged \
-p 6380:6379 \
--network wn_docker_net \
--ip 172.18.12.11 \
--sysctl net.core.somaxconn=1024 \
-e TIME_ZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" \
-v /usr/local/software/redis/6379/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/software/redis/6379/data/:/data \
-d redis \
/usr/local/etc/redis/redis.conf
[root@localhost 6379]# tar -zxvf RedisBloom-2.2.4
可以把布隆过滤器理解为bitmap结构,判断某个对象是否存在时,它可能会误判。但是布隆过滤器也不是特别不精确,只要参数设置得合理,它的精确度也可以控制得相对足够精确,只会有小小的误判概率。
总得来说,当布隆过滤器说某个值存在时,这个值可能不存在;当它说某个值不存在时,那就肯定不存在。
布隆过滤器在项目开发中非常有用,主要应用在如下方面:
使用redis的布隆过滤器插件,实现布隆过滤器的功能。
wget https://github.com/RedisBloom/RedisBloom/archive/v2.2.4.tar.gz
yum -y install gcc
make
[root@localhost RedisBloom-2.2.4]# docker cp redisbloom.so redis_6379:/usr/local/etc/redis
Successfully copied 334kB to redis_6379:/usr/local/etc/redis
添加redisbloom.so到MODULES模块
使用
vim redis.conf
查看redis.conf文件内容
# Load modules at startup. If the server is not able to load modules
# it will abort. It is possible to use multiple loadmodule directives.
#
# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so
loadmodule /usr/local/etc/redis/redisbloom.so
docker restart redis_6379
使用
docker logs redis_6380
查看redis
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 6.2.6 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 1
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | https://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
1:M 18 Jan 2024 19:20:11.792 # Server initialized
1:M 18 Jan 2024 19:20:11.792 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 18 Jan 2024 19:20:11.792 # Module /usr/local/etc/redis/redisbloom.so failed to load: /usr/local/etc/redis/redisbloom.so: cannot open shared object file: No such file or directory
1:M 18 Jan 2024 19:20:11.792 # Can't load module from /usr/local/etc/redis/redisbloom.so: server aborting
[root@localhost conf]#
BF.ADD key item
127.0.0.1:6379> bf.add usernames tom
(integer) 1
127.0.0.1:6379> bf.add usernames jack
(integer) 1
BF.EXISTS key item
127.0.0.1:6379> bf.exists usernames tom
(integer) 1
127.0.0.1:6379> bf.exists usernames jack
(integer) 1
127.0.0.1:6379> bf.exists usernames jackx
(integer) 0