redis

  1.  redis数据持久化
    1. 持久化就是把内存的数据写到磁盘中,防止服务宕机导致内存数据丢失。
    2. redis持久化机制(rdb默认/aof):
      1. rds:redis database,快照。按照一定的时间将内存中的数据以快照的形式保存到硬盘中去,对应产生的数据文件为dump.rdb。
      2. aof:append only file,将redis执行的每次写命令记录到单独的日志文件中,当重启redis时会重新将持久化日志中的文件回复数据。
  2. redis key过期策略
    1. 定时过期;每个key会创建一个定时器,过期就删除;但是会占用大量的cpu资源去处理过期数据;
    2. 惰性过期:访问一个key的时候,去看这个key是否过期;对内存不友好;
    3. 定期过期:定时扫描一定数量的key,清除过期的key;
  3. redis内存淘汰策略(2000w数据,redis只有20w,怎么保证redis中都是热点数据)
    1. 全局key的选择性移除:当内存不足以写入新数据的时候,怎么淘汰原来的key,redis默认是移除最近最少使用的key
    2. 设置过期时间的key选择性移除:内存不足时,移除设置过期时间中的最近最少使用的key。
  4. 支持事务
    1. redis的事务是具有持久性和一致性;
    2. 但是不支持隔离性,因为redis的事务是不保证原子性和回滚的,事务中的命令执行失败,其他命令还是会正常执行的;
    3. redis的事务支持lua脚本,脚本内的数据可以一次性,按顺序执行,利用这个可以在redis分布式缓存的时候,set命令和expire命令写在lua脚本中,实现原子性;
  5. 支持的数据结构
    1. string; list; sortedlist; set; hashmap
  6. 集群模式(哨兵机制:redis高可用)
    1. 哨兵机制用来实现redis的高可用:判断master是否故障,需要哨兵集群大多数都同意才能判定,那么会涉及到分布式选举的问题;哨兵集群部分节点挂了,还是能正常工作的;哨兵集群至少需要3个实例(zookeeper也是),只保证高可用,不保证数据0丢失。
      1. 集群监控:主从模式上加一层哨兵机制,用来监控slave和master进程是否正常工作;
      2. 消息通知:如果redis实例有故障,那么哨兵会发送消息报警给管理员;
      3. 故障转移:如果master挂掉了,那么重新选主;
      4. 配置中心:重新选主,会通知客户端新的master ip。
  7. 主从架构
    1. redis复制的核心机制
      1. redis采用异步的方式进行复制;
      2. slave复制的时候,不会block自己的查询,此时会用旧的数据集,但是复制完毕后,需要删除旧数据集,加载新的,此时会关闭对外的读服务;
      3. slave节点主要是横向扩展,读写分离;
    2. 如果用了主从复制架构,那么master必须开启持久化,因为可能master宕机了,数据是空的,哨兵还没有检测到,master又重启了,然后复制到slave,slave此时也是空的;
    3. 主从复制原理
      1. 首次ms关系时,slave会发送全量复制sync给master,然后master会在后台保存快照,并将期间收到的写命令缓存到内存,然后发送给slave
      2. slave收到命令后,会本地持久化到磁盘,然后加载到内存中执行;
      3. 之后master所有的写命令都会同步给slave
      4. 但是这样会给master造成很大的压力,所有redis实际采用的主从从架构。
  8. redis集群最大节点数
    1. 16384  2的14次方
  9. 缓存异常
    1. 缓存穿透
    2. 缓存雪本

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值