Redis核心知识点

一、两种持久化

  • RDB快照

快照间隔内的数据会丢失;如果数据量很大,保存快照时间会比较长

  • AOF日志(Append Only File)

同步选项:always(每个命令同步)、everysec(每秒同步一次)、no(系统决定)

二、数据过期策略

1.定时删除

redis会把设置了过期时间的key放在单独的字典中,定时遍历来删除到期的key。

  • 每100ms从过期字典中随机挑选20个,把其中过期的key删除;
  • 如果过期的key占比超过1/4,重复上面步骤

为了保证不会循环过度,导致卡顿,扫描时间上限默认不超过25ms。根据以上原理,系统中应避免大量的key同时过期,给要过期的key设置一个随机范围。

2.惰性删除

过期的key并不一定会马上删除,而是查询时,去判断是否过期,如果过期了才删除。

三、数据淘汰策略

可以设置内存最大使用量,当内存使用量超出时,会施行数据淘汰策略。

Redis六种淘汰策略:

volatile-lru:最近最少使用淘汰(有过期时间的数据集)

volatile-ttl:将要过期的淘汰(有过期时间的数据集)

volatile-random:随机淘汰(有过期时间的数据集)

allkeys-lru:最近最少使用的淘汰(全部数据集)

allkeys-random:随机淘汰(全部数据集)

noeviction:禁止强制淘汰(全部数据集)

Redis 4.0 引入了 LFU (访问频率最少)

volatile-lfu :访问频率最少(有过期时间的数据集)

allkeys-lfu:访问频率最少(全部数据集)

LFU 策略通过统计访问频率

四、事务

事务中的多个命令被一次性发送给服务器,而不是一条一条发送,这种方式被称为流水线,它可以减少客户端与服务器之间的网络通信次数从而提升性能。

Redis 最简单的事务实现方式是使用 MULTIEXEC 命令将事务操作包围起来。

五、集群备份复制,高可用

通过使用 slaveof <主host> <port> 命令来让一个服务器成为另一个服务器的从服务器。 </port>

连接过程

先快照,后增量复制

主从链

解决从服务器太多。(主服务器可能无法很快地更新所有从服务器,或者重新连接和重新同步从服务器将导致系统超载。)增加中间层分担。

哨兵(Sentinel)

redis集群哨兵模式,保证集群高可用。Sentinel(哨兵)可以监听集群中的服务器,并在主服务器进入下线状态时,自动从从服务器中选举出新的主服务器。