1.redis 过期策略: 1.定时过期 2.惰性过期 3.定期过期 2.redis内存淘汰策略: 全局的键空间选择性移除 noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。 allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。(这个是最常用的) allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。 设置过期时间的键空间选择性移除 volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。 volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。 volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。 3.redis 数据存储格式: RDB 阶段性持久化数据到 一个dump.rdb 文件 AOF 记录每一条redis命令 aof文件中 目前版本的redis,在项目中我们一般采用混合模式的方式进行设置。 涉及到主备 主从 一主多从,主主从情况进行数据同步时候: 全量复制: 主 生成RDB,同步给从 ,从写入自己的磁盘,再加载到内存,这个阶段生成的新的aof命令再同步过来 部分复制: 重连后, 根据offset 复制偏移量 进行复制 ,如果offset过旧,或者失效,进行全量复制。 exec、discard、watch、multi 4.redis 常见的几种问题: 缓存雪崩 : 存在大量key 同时失效 设置随机时间 缓存击穿: 缓存中无,数据库中有,大量并发情况下 设置热点数据 加互斥锁 缓存穿透: 数据库 缓存中都不存在该数据 布隆过滤器 -- 存在不一定存在,不存在一定不存在 5.redis集群选举原理 当slave从节点发现自己的master主节点边为FAIL状态,尝试进行Failover ,以期望成为新的master。 由于挂掉的master可能有多个slave, 从而存在多个salve竞争成为master节点的过程: 1.slave发现自己的master节点边为FAIL 2.将自己记录的集群的currentEpoch+1,并广播 FAILOVER_AUTH_REQUST 信息。 3.其他节点收到该信息,只有master相应,判断请求者合法性,并发送 FAILOVER_AUTH_ACK ,对每一个epoch只发送一次ack。 4.尝试failover的slave收集master返回的 failover_auth_ack. 5.slave收到 超过半数master的ack后,边成新的Master 解释:为什么至少三个主节点,如果两个,其中一个挂了,只剩下一个节点,不能选举成功 6.slave节点广播pong消息通知其他集群节点
标签:过期,reids,redis,master,内存,移除,节点 From: https://www.cnblogs.com/dhdnm/p/16603581.html