博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常见Redis面试题
阅读量:5961 次
发布时间:2019-06-19

本文共 894 字,大约阅读时间需要 2 分钟。

hot3.png

前言

Redis大家都不陌生了,是高并发解决方案居家必备的良药。可以帮助我们解决高并发,存在的性能问题。

作为面试常问中间件,你应该知道这些常见redis面试题。

常见面试题

  1. 单线程的redis为毛这么快?

从以下几点回答,纯内存操作,单线程操作避免了频繁上下文切换,采用非阻塞的多路复用机制。

redis-client在操作的时候,产生不同类型的事件的socket,服务端的IO多路复用程序,将其放入队列,事件派发器会去队列中取,转发到不同的事件处理器中处理。

  1. redis数据类型有哪些?

一共五种。

  • String 常见的get/set操作。
  • hash value可以存放一些结构化的对象信息。
  • list 可以作为简单的队列使用,利用lrange做分页查询。
  • set 存放不重复的集合。
  • sorted set 带有score权重的set集合,可以做排行榜需求。
  1. redis的过期策略有哪些?

定时删除+惰性删除

  • 定时删除:定时器监控key,过期自动删除,过程消耗cpu,一般不采用。
  • 定期删除+惰性删除:每隔100ms检查一次,有过期key则删除,惰性删除是在尝试获取某个key时进行检查,进行删除操作。
  • 内存淘汰机制:可以设置redis的配置 maxmemory-policy volatile-lru,在内存不足时对使用最少的key进行淘汰。
  1. redis缓存穿透和雪崩怎么解决?

缓存穿透:

  • 互斥锁;
  • 异步更新:维护value的失效时间,异步线程进行更新;
  • 布隆过滤器进行拦截;

防止雪崩:

  • 失效事件随机,避免集体失效;
  • 互斥锁,存在性能问题;
  • 多级缓存;
  1. redis并发key竞争如何解决?

一般的采用redis的事务机制,但是在集群环境下数据已经分片就很难搞,redis的事务就显得鸡肋。

分情况讨论:

  • 对顺序没有要求,采用分布式锁进行排队,属于悲观锁方式。
  • 对顺序有要求,采用时间戳方式,在set之前比对时间戳,属于乐观锁方式。

欢迎关注公众号【服务端技术杂谈】,转发,点赞。

转载于:https://my.oschina.net/u/1000241/blog/2999617

你可能感兴趣的文章
PHP学习1——快速入门
查看>>
面试发散思维
查看>>
java日志commons-logging/log4j/slf4j/logBack需要知道的几件事
查看>>
TypeScript 2019 路线图:更效率,更易用!
查看>>
常见排序算法及对应的时间复杂度和空间复杂度
查看>>
业界 | 在德州叫一辆自动驾驶车,Drive.ai安排了7辆无人车展开真实试验
查看>>
实时数据平台设计:解决从OLTP到OLAP实时流转缺失
查看>>
三家公司在SD-WAN方面的新动作
查看>>
C#在PDF中如何以不同颜色高亮文本
查看>>
在同一页面显示多个JavaScript统计图表
查看>>
Mac电脑Tomcat下载及安装(详细)MAC在Eclipse里配置tomcat
查看>>
多线程之-----------定时器
查看>>
C#语法——反射,架构师的入门基础。
查看>>
Beego Models 之 一
查看>>
Python购物车练习
查看>>
StringBuffer 和 StringBiulder的区别
查看>>
自建网页服务器基础
查看>>
浅谈oracle 12C的新特性-CDB和PDB
查看>>
mysql 加密连接SSL
查看>>
mariadb 10.1.xx 自带数据库审计插件,直接上操作过程
查看>>