redis面试题汇总(部分)

先上redis面试题:后面讲述答案

  1. redis和其他缓存技术有什么区别
  2. redis有哪些数据结构
  3. 应用场景有哪些
  4. redis线程是否安全
  5. redis的单线程为什么特别高
  6. redis如何存放对象 json , 二进制 怎么选?
  7. redis中是否有事务机制,事务支持回滚吗(坑 不支持)
  8. redis是否有发布订阅的模式
  9. redis和数据库如何保持数据一致性
  10. redis宕机是否丢失数据
  11. redis数据持久化机制
  12. rdb和aof的区别
  13. 增量同步和全量同步的区别
  14. redis主从复制发生网络延迟怎么解决
  15. redis脑裂情况
  16. redis的哨兵机制 如何实现高可用
  17. redis集群方案 集群 主从 哨兵
  18. redis主从同步效率如果慢怎么办
  19. redis Cluster集群的整个实现原理
  20. redis缓存穿透 击穿 雪崩 解决方案
  21. redis如何实现分布式锁
  22. key的过期时间
  23. redis内存满了如何解决 数据舍弃机制
  24. 布隆过滤器 布谷鸟过滤器

redis应用场景
1 秒杀机制 登录token存储 token替换session 因为session不支持集群 短信验证码存储在redis中 减轻数据库访问压力 热点数据放入redis 例如首页 热点key预热 redis计数器 redis是单线程
redis分布式锁 setnx 使用框架
等等
亮点回答 :
redis时间监听 即将失效的监听回调

2 redis线程是否安全
安全!!!!!! redis是单线程
3 为什么单线程效率还高 1基于缓存 2 IO多路复用 3 redis官网不支持Windows系统
4 Windows没有eollp模型的实现
5 事务管理 依靠版本号机制实现 multi 和watch
6 redis事务不支持行锁
7 事务不支持回滚 支持事务取消
8 redis有发布订阅吗
有 但是极少用
9 订单超时三十分钟取消 消息超时回调方法
10 redis与数据库的一直性问题
1 清空redis 重新读取数据库
2 采用增量的binlog日志同步方案 引入消息中间件 订阅数据库的binlog文件,redis

11 redis内存满了怎么处理 数据淘汰策略

	(1)volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。
	(2)volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰。
	(3)volatile-random:从已设置过期时间的数据集中任意选择数据淘汰。
	(4)volatile-lfu:从已设置过期时间的数据集挑选使用频率最低的数据淘汰。
	(5)allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
	(6)allkeys-lfu:从数据集中挑选使用频率最低的数据淘汰。
	(7)allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
	(8) no-enviction(驱逐):禁止驱逐数据,这也是默认策略。意思是当内存不足以容纳新入数据时,
	新写入操作就会报错,请求可以继续进行,线上任务也不能持续进行,
	采用no-enviction策略可以保证数据不被丢失。

12 redis宕机后数据会不会丢失
不会 持久化策略 aof 或者rdb 最多丢失一秒数据
13 redis 持久化策略
rdb 全量持久化 定时性执行效率高但是有可能丢失数据 效率低 缓冲区
aop 是增量持久化 增量操作 将set操作计入日志操作 最多丢失一秒数据 效率高 但容易丢失数据
14 redis主从复制发生网络延迟怎么解决
一般情况下 redis主从基本都在内网中,所以网络延迟一般较小 当然内网依然存在网络延迟的信息那就只能提升带宽等方式作为解决方案
15 增量同步和全量同步
增量同步是每次修改数据 都会同步新的内容
全量同步是每次都把全部数据同步过来
16 redis主从同步效率慢怎么解决
慢 正常情况 采用多主多从或者树状形式去实现需求
17哨兵模式
当主节点宕机 哨兵选举出一个从节点做主节点 哨兵也要做集群为了投票的权重
但是会产生脑裂的情况需要做一定策略解决 应用了发布订阅原理
优缺点
缺点:哨兵需要多个 主节点只能有一个 数据可能产生冗余
优点:中心性质架构稳定
18分片集群
例如 三个主节点 每个主节点报存的数据不一样 16384卡槽位置均匀分配到三个阶段
redis-cluse即集群 最大优点 快速扩容缩容
19 缓存击穿 穿透雪崩
击穿和穿透不是一个
击穿是有数据 高并发场景下 会出现key的瞬间失效 大量请求就击穿了缓存 直接请求数据库 就想在屏障上凿开了一个洞
穿透是没有数据 查了缓存没有再查数据库 也没有 高频查询会造成数据库压力骤增
雪崩 缓存压力过大的情况下 redis失效然后查询数据库 高频下 数据压力过大

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默海情深以往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值