分布式Redis原理+面试题

本文详细介绍了Redis的数据结构、工作原理、分布式实现、内存回收策略,包括LRU淘汰,以及分布式锁的实现。此外,还讨论了Redis的持久化机制RDB和AOF,以及哨兵和集群模式下的数据同步和故障转移。最后,文章涵盖了一些常见的Redis面试题,如处理大量key的过期时间设置、Redis作为异步队列的使用,以及解决缓存穿透、击穿的问题。
摘要由CSDN通过智能技术生成

1 存储5种数据结构

string(字符串,整数,浮点) list hash set sorted-set

2 redis原理

1 expire处理过期key的方法
消极方法:懒惰型,当key访问时发现失效才会删除
积极方法:周期性的从设置了过期时间的key中选择一部分key进行删除
1 随机测试20个带有timeout信息的key
2 如果超过25%key删除,重复执行整个流程

2 发布订阅 pub/sub
producer--------> channel------->consumer
publish channel subscribe channel
不具备协议,持久化,可靠性

3 redis持久化
RDB (默认rdb持久化)当符合条件时,fork(创建)子进程,生成快照文件dump.rdb
Redis会在以下几种情况下对数据进行快照
1)配置规则
save secondes changes
save 900 1
save 300 10 (or)
save 60 10000
当多少seconds时有多少个changes的key变化会存快照文件
2) save(生成快照文件) 会阻塞所有客户端的请求
bgsave 后台异步做快照任务,redis仍能处理客户端的请求
3)flushall 清空内存数据
4)执行复制操作
缺点:两个快照间隔时会有数据丢失
AOF (默认关闭) appendonly yes
每次执行事务操作数据变更时会写入磁盘
当文件到达阀值,重写aof文件,redis正在执行的操作会写入重写缓存,再加到重写aof文件
重写过程类似快照,fork一个子进程,会全量遍历内存中的数据,然后逐个序列到aof文件中,替换上一个aof文件

4 redis内存回收策略
LRU 最少使用的数据淘汰
默认策略 内存达到预值,申请内存时会报错
allkeys-lru 最少使用的数据淘汰
allkeys-random 随机淘汰key
volatile-random/lru/ttl 在已设置过期时间的key中淘汰

5 redis 单进程单线程为什么性能很高

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值