redis常见面试题总结(上)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis 提升读写性能,减少 MySQL 请求。优点包括:内存存储加速数据获取,支持多样数据结构如哈希和有序集合,事务确保操作原子性,具备队列、主从复制及持久化功能。相较于 Memcache,Redis 数据类型更丰富,支持数据持久化与恢复,单值大小可达 512MB。其单线程设计基于 C 语言实现,使用非阻塞 IO 复用来高效处理请求。主从同步机制确保数据一致性,首次同步需生成 RDB 文件。事务虽保证命令序列化执行但不支持回滚。Bigkey 会增加网络负载并可能导致内存不平衡。缓存雪崩、穿透等问题可通过分散过期时间和布隆过滤器解决。缓存预热则预先填充热点数据。

一、为什么使用 redis?

使用缓存的目的就是提升读写性能。为了提高读写性能,带来更高的并发量。减少对 MySQL 的请求量。

二、redis 有哪些好处?

  • 读写速度快,因为数据存储在内存中,所以数据获取快。
  • 支持多种数据结构。包括字符串、列表、集合、有序列表、哈希等。
  • 支持事务,且操作遵守原子性,即对数据的操作要麽都执行、要麽都不执行。
  • 还支持队列、主从复制、集群、数据持久化等功能。

三、redis 和 memcache 区别

  • redis 和 memcache 都是将数据存储到内存中,都是内存数据库。
  • memcache 仅支持 key-value 结构的数据类型。redis 支持多种数据类型:string、hash、set、zset、list 等等。
  • redis 当物理内存用完时,可以将一些很久没用的 value 交换到磁盘。
  • memcache 可以利用 magent 做出一主多从;redis 也可以做一主多从。
  • memcache 挂掉之后数据就没有了;redis 可以定期保存数据到磁盘。
  • memcache 单个 value 最大 1M; redis 的单个最大时 512M.
  • memcache 挂掉之后数据不能恢复;redis 数据丢失后可以通过 aof 或者 rdb 恢复。
  • memcache 网络 IO 模型是多线程,非阻塞 IO 复用的网络模型,原型上接进 nginx。redis 使用单线程的 IO 复用模型。

四、为什么单线程效率还那么高?

  • c 语言编写,效率高
  • 存内存操作
  • 基于非阻塞IO复用模型机制
  • 单线程避免了多线程上下文切换问题
  • 丰富的数据结构

五、redis 的同步机制了解是什么?

redis 支持主从同步、从从同步。如果是第一次进行主从同步,主节点需要使用 bgsave 命令,再将后续修改操作记录到内存的缓冲区,等 RDB 文件全部同步到复制节点,复制节点接受完成后将 RDB 镜像加载到内存中。等加载完成后,复制节点通知主节点将复制期间修改的操作记录同步到复制节点,即可完成同步过程。

六、对 redis 事务的理解

1、什么是 redis 事务?原理是什么?

redis 中的事务是一组命令的集合,是 redis 的最小执行单位。它可以保证一次执行多个命令,每个事务是一个单独隔离的操作。事务中的所有命令都会序列化、按顺序执行。服务端再执行事务的过程中,不会被其他客户端发来的命令请求打断。

2、redis 事务的注意点?

  • redis 事务不支持回滚,不像 MySQL 的事务一样,要么都执行要么都不执行。
  • redis 服务端在执行事务的过程中,不会被其他客户端发来的命令请求打断,直到事务命令全部执行完毕才会执行其他客户端的命令。

七、redis 如果存储了 bigkey 会存在什么影响?

  • 网络阻塞:获取 bigkey,传输的数据量大,会增加带宽的压力。
  • 超时阻塞:因为 bigkey 占用的空间大,所以操作起来效率低,导致出现阻塞的可能性增大。
  • 导致内存空间不平衡:一个 bigkey 存储量比较大,同一个 key 在同一个节点或服务器中存储,会造成一定影响。

八、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题

1、缓存雪崩

缓存雪崩是在同一时间大量的 key 过期,导致所有的请求直接访问数据库。对数据库的 CPU 和内存造成了巨大压力,严重的会造成数据库宕机。

解决方案:最简单的处理方案是将缓存失效时间分开。

2、缓存穿透

缓存穿透是指用户请求数据,在数据库中没有,自然缓存中也没有,就会导致会直接查询数据库,数据库中也没有就会返回null.

解决方案:采用布隆过滤器。

3、缓存预热

缓存预热是将一些需要缓存的数据通过接口或者页面实现存储缓存中。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
负载均衡 NoSQL 算法
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
|
3月前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
3月前
|
NoSQL Java 关系型数据库
不懂这些,面试都不敢说自己熟悉Redis
下面这位就是Redis的创始人,他叫antirez,让我们Java开发者又要多学一门Redis的始作俑者。我们肯定很难想象Redis创始人竟然学的是是建筑专业,而当年antirez是为了帮网站管理员监控访问者的实时行为才开发的Redis。为啥antirez不用MySQL来开发?MySQL并不适用于实时应用程序,存储数据库需要磁盘读写,大量的数据操作会使网站速度过于缓慢。于是Redis的前身LLOOGG就这样诞生了,后期也发展为了Redis。大家好,我是南哥。
不懂这些,面试都不敢说自己熟悉Redis
|
3天前
|
存储 NoSQL Java
可能是最漂亮的Redis面试基础详解
我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了Redis基础最常见的面试题!包含了Redis五大基本数据类型、Redis内存回收策略、Redis持久化等。相信大部分Redis初学者都会忽略掉一个重要的知识点,Redis其实是单线程模型。我们按直觉来看应该是多线程比单线程更快、处理能力更强才对,比如单线程一次只可以做一件事情,而多线程却可以同时做十件事情。但Redis却可以做到每秒万级别的处理能力,主要是基于以下原因:(1)Redis是基于内存操作的,Redis所有的数据库状态都保存在
可能是最漂亮的Redis面试基础详解
|
3天前
|
NoSQL Redis
redis 的 key 过期策略是怎么实现的(经典面试题)超级通俗易懂的解释!
本文解释了Redis实现key过期策略的方式,包括定期删除和惰性删除两种机制,并提到了Redis的内存淘汰策略作为补充,以确保过期的key能够被及时删除。
16 1
|
28天前
|
存储 缓存 NoSQL
【Java面试题汇总】Redis篇(2023版)
Redis的数据类型、zset底层实现、持久化策略、分布式锁、缓存穿透、击穿、雪崩的区别、双写一致性、主从同步机制、单线程架构、高可用、缓存淘汰策略、Redis事务是否满足ACID、如何排查Redis中的慢查询
【Java面试题汇总】Redis篇(2023版)
|
19天前
|
缓存 监控 NoSQL
阿里面试让聊一聊Redis 的内存淘汰(驱逐)策略
大家好,我是 V 哥。粉丝小 A 面试阿里时被问到 Redis 的内存淘汰策略问题,特此整理了一份详细笔记供参考。Redis 的内存淘汰策略决定了在内存达到上限时如何移除数据。希望这份笔记对你有所帮助!欢迎关注“威哥爱编程”,一起学习与成长。
|
2月前
|
存储 消息中间件 NoSQL
Redis总结篇(附Redis常见面试题)
本文是对Redis系列文章的总结,涵盖了Redis的数据结构、主从复制、哨兵模式、Cluster分片方案等关键知识点,并附带了一些常见的Redis面试题。
Redis总结篇(附Redis常见面试题)
|
2月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。