redis随笔
1、八大内存淘汰机制
1)、直接返回错误,不删除任何键
2)、删除过期键
3)、随机删除redis键
4)、随机删除快过期键
5)、根据lru算法删除redis键
6)、根据lru算法删除要过期redis键
7)、根据lfu算法删除redis键
8)、根据lfu算法删除快要过期redis键
2、热key问题
由于该key存储的数据过于热点,经常被访问,导致redis挂机。解决方法:将该数据集群或者缓存到本地内存中。
3、缓存穿透,缓存击穿,缓存雪崩
缓存穿透指查询的数据在redis中不存在、在数据库中也不存在,导致查询每次都要查数据库然后返回。解决为布隆过滤器。
缓存击穿指大量请求在请求这个数据,该数据失效的瞬间,导致大量请求打到数据库上,解决为设置永不过期。
缓存雪崩指大量过期键过期,导致大量请求打到数据库上,解决为合理设置过期时间。
4、redis的几种模式
1)、单机模式:就是一台redis
2)、集群模式:多台redis
3)、哨兵模式:哨兵监控redis
4)、主从复制:主为写,从为读
5、哨兵选举的过程
第一个发现领头哨兵挂了的哨兵就会向其他哨兵发送命令让他们选择自己成为零头哨兵。没有选举他人的哨兵会将票投给这个哨兵。当这个哨兵发现票数超过设定值,那么它将成为领头哨兵。
如果多个哨兵参与选举,就会重复上述过程,直到选举成功。
6、集群的故障恢复
有ABCDE五个master,当A向B发送ping,B没有回复,并且一直没有响应。此时,A就会向其他master发送它认为B下线的意见,其他master收到意见后,开始ping B,如果超过半数或者设定的参数都认为B下线了,那么B将会被剔除集群。反之,B将继续存在。
7、主从复制的原理
从机将会发送SYNC命令到主机,主机收到命令将快照保存,再将缓存命令和快照一起打包到从机,从机收到之后,将快照写入到磁盘临时文件,写入完成后并替换到快照。
8、过期策略
1)、定时过期:设置过期时间时创建一个定时器,到期则自动清除
2)、惰性过期:只有访问到这个key,才会判断是否过期
3)、定期过期:每隔一段时间就会扫瞄一定量的key,过期则清除
9、持久化策略
1)、AOF,redis每秒将命令写入aof文件中,不包括读命令。所以,文件会比较大,比较消耗资源。但是如果redis挂机,只会丢失一秒的数据。不适合做备份,适合做容灾恢复。
2)、RDB,redis每隔一段时间和数据变化情况将数据写入rdb文件,文件较小,适合做备份,但是容易丢失大量数据,默认是RDB
10、主节点选举机制
1)、过滤故障的节点
2)、优先级slave-priority最大的为主节点
3)、偏移量,数据量的字节,主服务器会将偏移量发送给从服务器,主从偏移量一致则为数据一致,最大的从节点作为主节点
4)、runid,生成的runid最小则为主节点