Redis的常见面试题

本文探讨了Redis相对于Memcached在数据结构、内存使用、性能、持久化、分布式支持、性能问题解决、过期策略、Java客户端选择、Jedis与Redisson对比以及内存优化和同步机制方面的优势和策略。
摘要由CSDN通过智能技术生成

Redis 相比 Memcached 有哪些优势? 

1、Redis 相比 memecache,拥有更多的数据结构和支持更丰富的数据操作。 
Redis 支持 key-value,常用的数据类型主要有 String、Hash、List、Set、Sorted Set。 
memecache 只支持 key-value。 

2、内存使用率对比,Redis 采用 hash 结构来做 key-value 存储,由于其组合式的压缩,其内
存利用率会高于 memecache。 

3、性能对比:Redis 只使用单核,memecache 使用多核。 

4、Redis 支持磁盘持久化,memecache 不支持。 
Redis 可以将一些很久没用到的 value 通过 swap 方法交换到磁盘。 

5、Redis 支持分布式集群,memecache 不支持。 


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

(1) Master 最好不要做任何持久化工作,如 RDB 内存快照和 AOF 日志文件 
(2) 如果数据比较重要,某个 Slave 开启 AOF 备份数据,策略设置为每秒同步一次 
(3) 为了主从复制的速度和连接的稳定性, Master 和 Slave 最好在同一个局域网内 
(4) 尽量避免在压力很大的主库上增加从库 
(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即: Master <- Slave1 <- Slave2 
<-Slave3... 

redis 的过期策略是什么?内存淘汰机制有哪些

redis 采用的是定期删除+惰性删除策略。 
在 redis.conf 中有一行配置(maxmemory-policy volatile-lru)内存淘汰策略 
volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据
淘汰 
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰 
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰 
allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰 
allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰 
no-enviction(驱逐):禁止驱逐数据,新写入操作会报错 

Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?

Redisson、Jedis、lettuce 等等,官方推荐使用 Redisson。 


Jedis 与 Redisson 对比有什么优缺点?

Jedis 是 Redis 的 Java 实现的客户端,其 API 提供了比较全面的 Redis 命令的支持;
Redisson 实现了分布式和可扩展的 Java 数据结构,和 Jedis 相比,功能较为简单,不支持
字符串操作,不支持排序、事务、管道、分区等 Redis 特性。Redisson 的宗旨是促进使用
者对 Redis 的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。 


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

缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 ?
缓存雪崩:指缓存中的大量数据同时失效或缓存系统发生故障,导致大量请求直接访问后端存储系统,给后端系统带来巨大压力。
缓存穿透:指查询一个不存在的数据,由于缓存不命中时需要从数据库查询,若查不到数据则不写入缓存,导致每次请求都要查询数据库。
缓存预热:指系统上线后,提前将相关缓存数据加载到缓存系统,避免用户请求时先查询数据库
缓存更新:指为节约内存而对部分数据进行淘汰或更新。
缓存降级:指缓存失效或缓存服务器故障时,不访问数据库,直接返回默认数据或访问服务内存数据

怎么理解 Redis 事务? 
1.事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执
行的过程中,不会被其他客户端发送来的命令请求所打断。 
2.事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行

事务相关的命令有哪几个?
MULTI、EXEC、DISCARD和WATCH
multl  :开启事务,redis会将后续的命令逐个放入队列中。
exec :提交事务,原子化执行事务块内的所有命令。
discard:取消事务,放弃执行事务块内的所有命令。
watch:监听事务,监视一个或多个key,如果在事务执行前这个key的值发生改变,事务将被打断。

Redis 如何做内存优化?
合理设置过期时间:在使用Redis时,可以设置键值对的过期时间,当过期时间到达后,Redis会自动删除对应的键值对,释放内存空间。
开启内存压缩功能:通过Redis提供的Ziplist和Intset等编码来压缩字符串和整数类型的数据,减少Redis服务器上的内存使用。

Redis 的同步机制了解么? 
Redis 可以使用主从同步,从从同步。第一次同步时,主节点做一次 bgsave,并同时将后续
修改操作记录到内存 buffer,待完成后将 rdb 文件全量同步到复制节点,复制节点接受完
成后将 rdb 镜像加载到内存。加载完成后,再通知主节点将期间修改的操作记录同步到复
制节点进行重放就完成了同步过程。


 

回答: Redis常见面试题包括但不限于以下几个方面: 1. Redis的特点和优势:Redis是一个基于内存的NoSQL数据库,支持多种数据结构和丰富的操作,具有高性能、高并发、持久化、主从同步等特点。 2. Redis的数据结构:Redis支持多种数据结构,包括字符串(string)、列表(list)、集合(set)、有序集合(sorted set)和哈希(hash),每种数据结构都有相应的操作方法。 3. Redis的持久化方式:Redis有两种持久化方式,分别是RDB(Redis Database)和AOF(Append Only File)。RDB是将内存中的数据定期保存到磁盘上,而AOF是将每个写操作追加到文件末尾。 4. Redis的使用场景:Redis可以用于缓存、会话管理、计数器、排行榜、消息队列等多种场景。它的高性能和丰富的数据结构使得它在处理大量并发请求和快速读写的场景下表现出色。 5. Redis的并发访问:Redis采用单进程单线程模式,通过队列模式将并发访问变为串行访问。在Jedis客户端对Redis进行并发访问时可能会出现连接超时、数据转换错误、阻塞等问题,需要注意处理这些并发访问的情况。 综上所述,Redis是一个功能强大的基于内存的NoSQL数据库,具有多种数据结构和丰富的操作方法,适用于多种场景。在面试中,了解Redis的特点、数据结构、持久化方式、使用场景和并发访问等方面的知识是非常重要的。 #### 引用[.reference_title] - *1* *2* [redis面试题总结(附答案)](https://blog.csdn.net/guorui_java/article/details/117194603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [精选 21道 Redis 最常问面试题!收藏一波 !](https://blog.csdn.net/w915209092/article/details/126035419)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值