运维面试题库之Redis

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 运维面试题库之Redis

Redis

Q:什么是Redis?它的特点是什么?

A:Redis是一种开源的内存数据存储系统,常用作缓存、数据库和消息代理。它的主要特点包括:

  • 高性能:Redis存储在内存中,提供快速的读写操作和低延迟。
  • 数据结构多样性:Redis支持多种数据结构,如字符串、哈希、列表、集合和有序集合。
  • 持久性:Redis可以将数据持久化到磁盘,以防止数据丢失。
  • 高可用性:Redis支持主从复制和集群模式,以提供高可用性和可伸缩性。
  • 支持丰富的功能:Redis提供了丰富的功能,如事务、发布订阅、Lua脚本等

Q:Redis支持的数据结构有哪些?请举例说明其用途

A:Redis支持以下数据结构:

  • 字符串(String):存储字符串值,常用于缓存、计数器等。
  • 哈希(Hash):存储键值对,适用于存储对象或记录的属性。
  • 列表(List):存储有序的字符串元素,可用于实现队列、栈等。
  • 集合(Set):存储唯一的字符串元素,提供集合操作,如交集、并集等。
  • 有序集合(Sorted Set):存储有序的字符串元素,并为每个元素关联一个分数,适用于排行榜、范围查询等。

Q:Redis的持久化机制是什么?有哪两种方式?

A:Redis提供两种持久化方式:

  • RDB(Redis Database):将Redis数据保存到磁盘的快照文件,可以定期或手动创建。

    • 优点:

      • 只有一个文件 dump.rdb,方便持久化。
      • 容灾性好,一个文件可以保存到安全的磁盘。
      • 性能最大化,fork 子进程来完成写操作,让主进程继续处理命令,所以是 IO 最大化。使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 Redis的高性能。
      • 相对于数据集大时,比 AOF 的启动效率更高。
    • 缺点:

      • 数据安全性低。RDB 是间隔一段时间进行持久化,如果持久化之间 Redis 发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候
  • AOF(Append-Only File):以追加的方式记录每个写操作到日志文件中,用于恢复数据。

    • 优点:
      • 数据安全,aof 持久化可以配置 appendfsync 属性,有 always,每进行一次命令操作就记录到 aof 文件中一次。
      • 通过 append 模式写文件,即使中途服务器宕机,可以通过 redis-check-aof 工具解决数据一致性问题。
      • AOF 机制的 rewrite 模式。AOF 文件没被 rewrite 之前(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的 flushall)
    • 缺点:
      • AOF 文件比 RDB 文件大,且恢复速度慢。
      • 数据集大的时候,比 RDB 启动效率低。

Q:Redis的主从复制是什么?有什么作用

A:Redis主从复制是一种机制,通过将主节点的数据复制到一个或多个从节点,以实现数据的冗余和读扩展。主从复制的作用包括:

  • 数据备份:从节点可以用作主节点数据的备份,以防止主节点数据的丢失。
  • 提高读性能:从节点可以处理读取请求,减轻主节点的负载。
  • 故障恢复:如果主节点发生故障,可以将从节点升级为新的主节点

Q:Redis如何处理并发访问和并发写入的问题?

A:Redis是单线程的,通过使用事件驱动的异步IO模型来处理并发访问。Redis的单线程模型可以避免锁竞争和线程上下文切换的开销。此外,Redis还提供了事务和乐观锁等机制来处理并发写入的问题。

Q:Redis的缓存失效策略有哪些?请说明它们的工作原理

A:Redis的缓存失效策略包括:过期时间、LRU(最近最少使用)、LFU(最近最不常用)和随机淘汰。过期时间是通过设置键的过期时间来失效缓存。LRU和LFU是基于访问频率的缓存淘汰策略,LRU淘汰最长时间未被访问的键,而LFU淘汰最不常用的键。随机淘汰是随机选择要淘汰的键。

Q:Redis如何处理并发读写的问题?

A:Redis是单线程的,通过使用事件驱动的异步IO模型来处理并发读写。Redis的单线程模型可以避免锁竞争和线程上下文切换的开销。此外,Redis还提供了乐观锁机制(使用WATCH命令)来处理并发写入的问题

Q: 是否使用过 Redis 集群,集群的原理是什么?

A:

  1. Redis Sentinal 着眼于高可用, 在 master 宕机时会自动将 slave 提升为master, 继续提供服务。
  2. 、Redis Cluster 着眼于扩展性, 在单个 redis 内存不足时, 使用 Cluster 进行分片存储。

Q:Redis 常见性能问题和解决方案?

A:(1) Master 最好不要做任何持久化工作,如 RDB 内存快照和 AOF 日志文件

(2) 如果数据比较重要,某个 Slave 开启 AOF 备份数据,策略设置为每秒同步一次

(3) 为了主从复制的速度和连接的稳定性,Master 和 Slave 最好在同一个局域网内

(4) 尽量避免在压力很大的主库上增加从库

(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3...

这样的结构方便解决单点故障问题,实现 Slave 对 Master 的替换。如果 Master 挂了,可以立刻启用 Slave1 做 Master,其他不变。

Q:Redis 最适合的场景?

A:会话缓存、全页缓存、队列、排行榜/计数器、发布/订阅、

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;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事务实现--------->负载均衡算法、类型)
|
1天前
|
存储 NoSQL Java
可能是最漂亮的Redis面试基础详解
我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了Redis基础最常见的面试题!包含了Redis五大基本数据类型、Redis内存回收策略、Redis持久化等。相信大部分Redis初学者都会忽略掉一个重要的知识点,Redis其实是单线程模型。我们按直觉来看应该是多线程比单线程更快、处理能力更强才对,比如单线程一次只可以做一件事情,而多线程却可以同时做十件事情。但Redis却可以做到每秒万级别的处理能力,主要是基于以下原因:(1)Redis是基于内存操作的,Redis所有的数据库状态都保存在
可能是最漂亮的Redis面试基础详解
|
2天前
|
NoSQL Redis
redis 的 key 过期策略是怎么实现的(经典面试题)超级通俗易懂的解释!
本文解释了Redis实现key过期策略的方式,包括定期删除和惰性删除两种机制,并提到了Redis的内存淘汰策略作为补充,以确保过期的key能够被及时删除。
11 1
|
26天前
|
存储 缓存 NoSQL
【Java面试题汇总】Redis篇(2023版)
Redis的数据类型、zset底层实现、持久化策略、分布式锁、缓存穿透、击穿、雪崩的区别、双写一致性、主从同步机制、单线程架构、高可用、缓存淘汰策略、Redis事务是否满足ACID、如何排查Redis中的慢查询
【Java面试题汇总】Redis篇(2023版)
|
17天前
|
缓存 监控 NoSQL
阿里面试让聊一聊Redis 的内存淘汰(驱逐)策略
大家好,我是 V 哥。粉丝小 A 面试阿里时被问到 Redis 的内存淘汰策略问题,特此整理了一份详细笔记供参考。Redis 的内存淘汰策略决定了在内存达到上限时如何移除数据。希望这份笔记对你有所帮助!欢迎关注“威哥爱编程”,一起学习与成长。
|
2月前
|
存储 消息中间件 NoSQL
Redis总结篇(附Redis常见面试题)
本文是对Redis系列文章的总结,涵盖了Redis的数据结构、主从复制、哨兵模式、Cluster分片方案等关键知识点,并附带了一些常见的Redis面试题。
Redis总结篇(附Redis常见面试题)
|
2月前
|
缓存 NoSQL Redis
redis常见面试题总结(上)
Redis 提升读写性能,减少 MySQL 请求。优点包括:内存存储加速数据获取,支持多样数据结构如哈希和有序集合,事务确保操作原子性,具备队列、主从复制及持久化功能。相较于 Memcache,Redis 数据类型更丰富,支持数据持久化与恢复,单值大小可达 512MB。其单线程设计基于 C 语言实现,使用非阻塞 IO 复用来高效处理请求。主从同步机制确保数据一致性,首次同步需生成 RDB 文件。事务虽保证命令序列化执行但不支持回滚。Bigkey 会增加网络负载并可能导致内存不平衡。缓存雪崩、穿透等问题可通过分散过期时间和布隆过滤器解决。缓存预热则预先填充热点数据。
24 0
|
存储 缓存 移动开发
redis 面试总结
前段时间找工作搜索 golang 面试题时,发现都是比较零散或是基础的题目,覆盖面较小。而自己也在边面试时边总结了一些知识点,为了方便后续回顾,特此整理了一下。
178 0
redis 面试总结
|
存储 NoSQL 数据库
|
存储 NoSQL 数据库
Redis面试总结
什么是redis? Redis 是一个基于内存的高性能key-value数据库。 (有空再补充,有理解错误或不足欢迎指正) Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。
1592 0