【面试分享】面试题——redis

一、题目

  • Redis的数据持久化策略有哪些
  • 什么是缓存穿透,怎么解决
  • 什么是布隆过滤器
  • 什么是缓存击穿,怎么解决
  • 什么是缓存雪崩,怎么解决
  • redis双写问题
  • Redis分布式锁如何实现
  • Redis实现分布式锁如何合理的控制锁的有效时长
  • Redis的数据过期策略有哪些
  • Redis的数据淘汰策略有哪些
  • Redis集群有哪些方案, 知道嘛
  • 什么是 Redis 主从同步
  • 你们使用Redis是单点还是集群 ? 哪种集群
  • Redis分片集群中数据是怎么存储和读取的
  • redis集群脑裂
  • 怎么保证redis的高并发高可用
  • 你们用过Redis的事务吗 ? 事务的命令有哪些
  • Redis是单线程的,但是为什么还那么快?

二、答案

1、Redis的数据持久化策略有哪些

Redis的数据持久化策略主要有两种:

  • RDB(Redis Database)持久化:RDB持久化通过fork子进程将Redis在某个时间点的数据保存到磁盘上的快照文件中(通常为dump.rdb)。这种方式的好处是可以在磁盘上创建非常紧凑的数据文件,适用于备份和灾难恢复。但是,它可能会丢失最后一次快照之后的数据,且在恢复大量数据时可能会导致Redis的启动时间较长。
  • AOF(Append Only File)持久化:AOF持久化将Redis的每个写操作(包括写命令和删除命令)追加到一个文件中(AOF文件)。当Redis重启时,会重新执行AOF文件中的命令来恢复数据。这种方式的好处是可以保证数据的完整性和一致性,但缺点是日志文件通常比RDB文件大,且恢复数据时需要执行较多的命令,可能会导致恢复速度较慢。

为了充分利用持久化的优势,Redis也支持同时启用RDB和AOF持久化。

2、什么是缓存穿透,怎么解决

缓存穿透指的是恶意用户或攻击者通过请求不存在于缓存和后端存储中的数据来使得所有请求都落到后端存储上,导致系统瘫痪。

解决方案包括:

  • 使用布隆过滤器:将所有可能存在的数据哈希到一个足够大的bitmap中,一个不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。
  • 缓存空结果:如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),仍然把这个空结果进行缓存,但它的过期时间会很短。
  • 使用黑白名单:通过维护一个黑白名单来过滤掉无效的请求。
  • 加入缓存预热机制:在系统启动或低峰时段,预先将一些热点数据加载到缓存中,以减少缓存穿透的发生。

3、什么是布隆过滤器

布隆过滤器(Bloom Filter)是1970年由布隆提出的,它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中,其优点是空间效率和查询时间都比一般的算法要好得多,但缺点是有一定的误识别率和删除困难。

4、什么是缓存击穿,怎么解决

缓存击穿指的是在高并发访问下,某个热点数据失效后,大量请求同时涌入后端存储,导致后端存储负载增大、响应时间变慢,甚至瘫痪。

解决方案包括:

  • 使用互斥锁或分布式锁&

你可能感兴趣的:(面试,面试,redis)