管道
发布订阅pub/sub
publish chanel message发布一个消息
subscribe chanel 监听一个通道的消息
事务
multi 开启事务
操作命令队列
exec 执行事务
watch 监控key
缓存穿透
大量请求查询缓存中没有的东西,直接访问到数据库造成数据库压力
布隆过滤器
概率解决问题
不能100%阻挡用户位请求,降低概率<1%
1.有的元素在bitmap中标记
2.请求的 可能被误标记
3.但一定概率会大量减少放行(穿透)
4.成本低(二进制位)
Bloom
Counting bloom
Cukcoo
布谷鸟过滤器
1.穿透了 不存在
2.client增加redis中的key,value标记
3.数据库增加了元素
4.要完成元素添加到bloom
redis作为数据库和缓存的区别
缓存数据不重要/不是全量数据/缓存随着访问变化/热数据
redis作为缓存,redis中数据怎么做到随业务变化只保留热数据
因为内存大小是有限的(瓶颈)
业务逻辑-->key的有效期,
业务运转-->内存是有限的 随之访问的变化,应该淘汰掉冷数据
key过期
6379.conf 中
内存配置参数maxmemory<byte>
maxmemory-policy noevication/lfu/lru
1.key有效期不会随着访问延长
2.发生写 会剔除过期时间
3.可定时删除
过期原理
1.被动访问是判定
2.周期轮询判定(增量)
*.稍微牺牲下内存,但是保住了redis性能为王