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 最简单的事务实现方式是使用 MULTI 和 EXEC 命令将事务操作包围起来。
五、集群备份复制,高可用
通过使用 slaveof <主host>
连接过程
先快照,后增量复制
主从链
解决从服务器太多。(主服务器可能无法很快地更新所有从服务器,或者重新连接和重新同步从服务器将导致系统超载。)增加中间层分担。
哨兵(Sentinel)
redis集群哨兵模式,保证集群高可用。Sentinel(哨兵)可以监听集群中的服务器,并在主服务器进入下线状态时,自动从从服务器中选举出新的主服务器。