登录:
https://redis.io/
点击 module
RedisBloom:
如下图右键红框位置,选择复制链接
wget命令下载.zip文件:
安装unzip命令
yum install unzip
解压源码:
unzip master.zip
进入解压后的文件:
发现有Makefile文件
make
执行结束后,发现多了redisbloom.so这个扩展库
一般会将此库放到redis目录中
cp redisbloom.so /opt/mashibing/redis6
停调redis
service redis_6379 stop
ps -fe|grep redis //查看是否还有redis服务
手工启动redis:
redis-server --loadmodule /opt/mashibing/redis6/redisbloom.so //注意.so库要用全路径
连接客户端
redis-cli
再启动 redis_6380 ,且建立一个客户端链接:
只对6379加载了布隆模块,因此输入bf按tab键会弹出一些命令,
而6380的客户端连接不会,
布隆过滤器可以解决缓存穿透问题:
布隆过滤器原理:小的空间解决大量数据匹配的过程
缓存穿透:缓存没有 数据库也没有
有如下几种解决缓存穿透的方法:
在这里插入图片描述
vi /etc/redis/6379.conf
里面有maxmemory //可以设置大小
可以查看redis的配置
redis内存 最好控制在 1G-10G范围,如果特别大,数据迁移成本高、持久化成本高。
redis内存满后,
maxmemory-policy noeviction
volatile查询的key是 设置如下命令的key: (expire expireat)
设置过期时间,两种方法
expire命令:
127.0.0.1:6380> set k1 aaa ex 20
OK
127.0.0.1:6380> ttl k1
(integer) 16
127.0.0.1:6380>
127.0.0.1:6380> ttl k1
(integer) 12
127.0.0.1:6380> get k1
“aaa”
127.0.0.1:6380> get k1
(nil)
127.0.0.1:6380> set k2 bbb
OK
127.0.0.1:6380> expire k2 20
(integer) 1
127.0.0.1:6380> ttl k2
(integer) 16
expireat命令:
127.0.0.1:6380> keys *
(empty array)
127.0.0.1:6380> set k1 aaa
OK
127.0.0.1:6380> time //获取时间戳
- “1615152055”
- “851450”
127.0.0.1:6380> EXPIREAT k1 1615155055
(integer) 1
127.0.0.1:6380> ttl k1
(integer) 2978
127.0.0.1:6380> ttl k1
(integer) 2970
127.0.0.1:6380> set k1 bbb //更改k1值后 发现会终止定时
OK
127.0.0.1:6380> ttl k1
(integer) -1
127.0.0.1:6380>