Redis面试题整理

1、Redis用过哪些数据类型,每种数据类型的使用场景

Redis五种数据类型及使用场景详解_遇见更好的自己、的博客-CSDN博客_redis数据类型使用场景我们都知道Redis支持5种不同的数据类型、但是在我们的日常开发过程中,用的最多的是String类型。当存一个字段属性时,我们使用String,当存储一个对象时,我们使用Gson转换成一个Json字符串去存储。但是针对Redis的五种数据类型,有很多业内的一些常用的使用场景整理。1、String类型 常用指令汇总:添加数据:set key value获取数据:get key删除数据:delkey添加多个数据:mset key1 valueq key2 value2 …获取多...https://blog.csdn.net/weixin_44399827/article/details/119790277

 2、Redis缓存穿透、缓存雪崩和缓存击穿原因,以及解决方案

Redis 缓存穿透 + 缓存雪崩 + 缓存击穿的原因和解决方案_爱与不爱,一念之间-CSDN博客_redis的缓存穿透和缓存雪崩在生产环境中,会因为很多的原因造成访问请求绕过了缓存,都需要访问数据库持久层,虽然对Redsi缓存服务器不会造成影响,但是数据库的负载就会增大,使缓存的作用降低一、缓存穿透 缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中。在日常工作中出于容错的考虑,如果从持久层查不到数据则不写入缓存层,缓存穿透将导致不存在的数据每次请求都要到持久层去查询,失去了缓...https://blog.csdn.net/womenyiqilalala/article/details/105205532

3、如何使用Redis来实现分布式锁,redis分布式锁有什么缺陷?

  截取田螺哥的文章:

面试必备:虾皮服务端15连问

分布式锁,是控制分布式系统不同进程共同访问共享资源的一种锁的实现。秒杀下单、抢红包等等业务场景,都需要用到分布式锁,我们项目中经常使用Redis作为分布式锁。

选了Redis分布式锁的几种实现方法,大家来讨论下,看有没有啥问题哈。

  • 命令setnx + expire分开写

  • setnx + value值是过期时间

  • set的扩展命令(set ex px nx) (lua脚本保证业务逻辑是否执行完)

  • set ex px nx + 校验唯一随机值,再删除

  • Redisson

1 命令setnx + expire分开写

如果执行完setnx加锁,正要执行expire设置过期时间时,进程crash掉或者要重启维护了,那这个锁就“长生不老”了,别的线程永远获取不到锁啦,所以分布式锁不能这么实现。 

2、set的扩展命令(set ex px nx)(注意可能存在的问题)

这个方案可能存在这样的问题:

  • 锁过期释放了,业务还没执行完。

  • 锁被别的线程误删。

3、 Redisson

分布式锁可能存在锁过期释放,业务没执行完的问题。有些小伙伴认为,稍微把锁过期时间设置长一些就可以啦。其实我们设想一下,是否可以给获得锁的线程,开启一个定时守护线程,每隔一段时间检查锁是否还存在,存在则对锁的过期时间延长,防止锁过期提前释放。

当前开源框架Redisson就解决了这个分布式锁问题。我们一起来看下Redisson底层原理是怎样的

只要线程一加锁成功,就会启动一个watch dog看门狗,它是一个后台线程,会每隔10秒检查一下,如果线程1还持有锁,那么就会不断的延长锁key的生存时间。因此,Redisson就是使用Redisson解决了锁过期释放,业务没执行完问题。

4、如何解决 Redis 的并发竞争Key问题。

redis并发竞争key问题如何解决_疯一样的女子-CSDN博客_如何解决redis的并发竞争key问题https://blog.csdn.net/suifeng629/article/details/103304247

 5、如何保证缓存与数据库双写时的数据一致性?

美团二面:Redis与MySQL双写一致性如何保证?_weiwenhou的博客-CSDN博客前言四月份的时候,有位好朋友去美团面试。他说,被问到Redis与MySQL双写一致性如何保证?这道题其实就是在问缓存和数据库在双写场景下,一致性是如何保证的?本文将跟大家一起来探讨如何回答这个问题。公众号:捡田螺的小男孩谈谈一致性一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入什么,读出来的也会是什么,用户体验好,但实现起来往往对系统的性能影响大弱一致性:这种一致性级别约束了系统在写入成功后,不承诺https://blog.csdn.net/weiwenhou/article/details/117170724

 6、Redis的线程模型是什么?

彻底搞懂Redis的线程模型_全菜工程师小辉的博客-CSDN博客为了接下来一篇博客,能使读者更加完整地学习线程模型,所以本文对Redis的线程模型进行必要的讲解。由于《Redis设计与实现》对于Redis的讲解简练优雅,所以本文大部分内容节选自本书,也欢迎对Redis有更多底层了解需求的读者,自行购买学习。文件事件处理器Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多...https://blog.csdn.net/y277an/article/details/98342442

7、Redis Zset 跳跃表算法

redis(五)跳跃表_lz710117239的博客-CSDN博客_redis 跳跃表一:基本概念        跳跃表是一种随机化的数据结构,在查找、插入和删除这些字典操作上,其效率可比拟于平衡二叉树(如红黑树),大多数操作只需要O(log n)平均时间,但它的代码以及原理更简单。跳跃表的定义如下:        “Skip lists are data structures  that use probabilistic  balancing rather thhttps://blog.csdn.net/lz710117239/article/details/78408919面试准备 -- Redis 跳跃表_LuckyToMeet-Dian叶-CSDN博客_redis 跳表看了一下面经,发现具有问了 redis 的跳跃表,惊呆了,赶紧学习顺便写下这一篇文章!https://blog.csdn.net/weixin_41622183/article/details/91126155

8、Redis 面霸篇:从高频问题透视核心原理 

码哥的经典文章写的非常nice

Redis 面霸篇:从高频问题透视核心原理从高频面试问题横扫 Redis 核心知识点https://mp.weixin.qq.com/s/wrrXz4GoILd5hsbrYACTmA

9、Redis为什么这么快?

大厂经典面试题:Redis为什么这么快?_weiwenhou的博客-CSDN博客前言大家好呀,我是捡田螺的小男孩。我们都知道Redis很快,它QPS可达10万(每秒请求数)。Redis为什么这么快呢,本文将跟大家一起学习。公众号:捡田螺的小男孩基于内存实现我们都知道内存读写是比磁盘读写快很多的。Redis是基于内存存储实现的数据库,相对于数据存在磁盘的数据库,就省去磁盘磁盘I/O的消耗。MySQL等磁盘数据库,需要建立索引来加快查询效率,而Redis数据存放在内存,直接操作内存,所以就很快。高效的数据结构我们知道,MySQL索引为了提高效率,选择了https://blog.csdn.net/weiwenhou/article/details/118272033

10、2W字!详解20道Redis经典面试题!(珍藏版)

收集的内容丰富 并且详细 艾神的稳藏

2W字!详解20道Redis经典面试题!(珍藏版)_科技缪缪的专栏-CSDN博客1. 什么是Redis?它主要用来什么的? Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内...https://blog.csdn.net/jastate/article/details/120620578

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值