20190506redis积累

本文围绕Redis展开,介绍了其持久化的两种方式RDB快照和AOF,以及各自优缺点和数据恢复方法;阐述了过期清除策略,包括定期清除及多种清理策略;讲解了主要工作模式单机、主从、哨兵、集群;还提及缓存击穿、穿透、雪崩问题及解决办法,最后说明了部分配置项。
一、redis
1.持久化两种方式

RDB快照:fork的形式 一个共享内存页 快照
父进程修改是新的副本 而子进程不会修改共享的那个内存所以没有变化,
时机:定期或者某个时间段超过配置的修改数就 快照一次
缺点:定期快照的方式注定会丢失两个快照时间点之间的数据。
AOF:每一个收到的写命令都通过write函数追加到文件中。
三种方式同步:
appendfsync always :每次有数据修改发生时都会写入AOF文件。
appendfsync everysec :每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no :从不同步。高效但是数据不会被持久化。

数据恢复:有aof优先选择恢复。

2.过期清除策略

定期清除:
通过限制删除操作执行的总时长和总频率来限制删除操作对CPU占用时间的影响。
当前已用内存超过maxmemory限定时,触发主动清理策略。清理时会根据用户配置的maxmemory-policy策略来做适当的清理。
如下几种:
volatile-lru : 从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用 的数据淘汰。
volatile-ttl : 从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数 据淘汰。
volatile-random : 从已设置过期时间的数据集(server.db[i].expires)中任意选择数据 淘汰。
allkeys-lru : 从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰。
allkeys-random : 从数据集(server.db[i].dict)中任意选择数据淘汰。
no-enviction : 禁止驱逐(淘汰)数据。默认策略

如果Redis的使用超过了设置的最大值,策略又是默认清除策略会返回返回OOM错误,需要配置清除策略。

3.主要工作模式:单机、主从、哨兵、集群

主从模式:
当从数据库启动时,会向主数据库发送sync命令,主数据库接收到sync后开始在后台报错快照rdb,在保存快照期间受到的命名缓存起来,当快照完成时,主数据库会将快照和缓存的命令一块发送给从。复制初始化结束。之后,主每受到1个命令就同步发送给从。

哨兵:基于主从模式,但是起了监听进程,故障可以转移,系统可用性更好
主出现故障自动将从数据库转换为主数据库。

集群:cluster集群方案,采用的是虚拟槽分区,槽范围是0-16383,有16384个槽。集群中有3个主节点,每个节点大致负责5500个槽的读写,节点会维护自身负责的虚拟槽。
键所对应的哈希值通过如下公式计算:CRC16(key)%16384。目前常见的

4.缓存击穿、缓存穿透、缓存雪崩

缓存击穿:某条热点数据过期,解决:操作db时加互斥锁。
缓存穿透:缓存找不到,加大db压力,解决:设计不存在数据的格式.。
缓存雪崩:不同数据集中过期,解决:随机过期时间。

5.配置项说明:

dbfilename dump.rdb #快照保存文件
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
#如果没有save 表示没有快照持久化
maxmemory #不配置或者0,表示"无限制",单位 byte
maxmemory-policy#清理策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值