阿里java面试经历:Redis相关问题被虐哭了,直到了解这些知识点

24 篇文章 1 订阅

前言:

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。同时redis在大厂是经常被问到的一个问题,所以熟悉的掌握redis相关问题,是能否拿到大厂offer的一个关键。

大厂redis面试真题及解析:

  • 什么是 Redis?

Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

Redis 与其他 key-value 缓存产品有以下三个特点:

Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。

Redis 支持数据的备份,即 master-slave 模式的数据备份。

  • Redis 的数据类型?

答:Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及 zsetsorted set:有序集合)。

我们实际项目中比较常用的是 string,hash 如果你是 Redis 中高级用户,还需要加上下面几种数据结构 HyperLogLog、Geo、Pub/Sub。

如果你说还玩过 Redis Module,像 BloomFilter,RedisSearch,Redis-ML,面试官得眼睛就开始发亮了。

  • 使用 Redis 有哪些好处?

1、速度快,因为数据存在内存中,类似于 HashMap,HashMap 的优势就是查找和操作的时间复杂度都是 O1)

2、支持丰富数据类型,支持 string,list,set,Zset,hash 等

3、支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行

4、丰富的特性:可用于缓存,消息,按 key 设置过期时间,过期后将会自动删除

  • Redis 相比 Memcached 有哪些优势

1、Memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰富的数据类

2、Redis 的速度比 Memcached 快很

3、Redis 可以持久化其数据

  • Memcache 与 Redis 的区别都有哪些?
  • Redis 是单进程单线程的?
  • 一个字符串类型的值能存储最大容量是多少?
  • Redis 的持久化机制是什么?各自的优缺点?
  • Redis 常见性能问题和解决方案:
  • redis 过期键的删除策略?
  • Redis 的回收策略(淘汰策略)?
  • 为什么 edis 需要把所有数据放到内存中?
  • Redis 的同步机制了解么?
  • Pipeline 有什么好处,为什么要用 pipeline?
  • 是否使用过 Redis 集群,集群的原理是什么?
  • Redis 集群方案什么情况下会导致整个集群不可用?
  • Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
  • Jedis 与 Redisson 对比有什么优缺点?
  • Redis 如何设置密码及验证密码?
  • 说说 Redis 哈希槽的概念?

上面这些就是大厂面试经常会问到的一些关于Redis的问题,由于文章长度的原因并没有将所有的面试题以及解析都给整理出来,有需要的可以关注公众号:java程序员聚集地  领取。

redis学习笔记:

关注redis小编做了一个完整的学习笔记,同时包含了有思维导图,进阶路线(pdf),redis的一些核心知识点,等等。分布式数据缓存(redis)

 

1,关系型数据库瓶颈与优化。

2,非关系型数据库数据中间件mongoDb,redis,tair,memcache,neo4j对比。

3,分布式数据缓存之readis:

  • 行业使用redis场景详解与演变过程
  • 解密redis基本数据类型,哨兵机制,复制,常用命令
  • 快速开始redis,Cluster集群和原理
  • 深入详解集群分配算法详解与动态水平扩容与监控
  • 深入详解jedis cluster开发与通讯协议详解
  • 实战企业级项目resdis框架gcache架构与开发

相关核心知识点:

基于 Redis 分布式锁

  1. 获取锁的时候,使用 setnx(SETNX key val:当且仅当 key 不存在时,set一个 key为 val 的字符串,返回 1;若 key 存在,则什么都不做,返回 0)加锁,锁的 value值为一个随机生成的 UUID,在释放锁的时候进行判断。并使用 expire 命令为锁添加一个超时时间,超过该时间则自动释放锁。
  2. 获取锁的时候调用 setnx,如果返回 0,则该锁正在被别人使用,返回 1 则成功获取锁。 还设置一个获取的超时时间,若超过这个时间则放弃获取锁。
  3. 释放锁的时候,通过 UUID 判断是不是该锁,若是该锁,则执行 delete 进行锁释放。

 

最后:

除了上面的Redis 相关核心知识点外,同时还分享更多精选整理的学习资料,包含(Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!)更多资料关注微信公众号:java程序员聚集地

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值