关于Redis的一些面试问题

1.redis为什么比较快

1.基于内存实现 :

Redis是基于内存存储实现的数据库,相对于数据存在磁盘的数据库,就省去磁盘磁盘I/O的消耗。MySQL等磁盘数据库,需要建立索引来加快查询效率,而Redis数据存放在内存,直接操作内存,所以就很快

2.高效的数据结构:

Redis内置了多种高效的数据结构,如字符串、哈希表、列表、集合和有序集合等。这些数据结构都经过优化,能够在时间复杂度为O(1)的情况下完成大部分操作

3.合理的数据编码:

Redis支持多种数据基本类型,每种基本类型对应不同的数据结构,每种数据结构对应不一样的编码。为了提高性能,Redis设计者总结出,数据结构最适合的编码搭配

4.合理的线程模型

①单线程模型:

避免了上下文切换 

Redis的单线程模型,避免了CPU不必要的上下文切换和竞争锁的消耗

②I/O 多路复用

  • 多路 :多个网络连接
  • 复用:复用同一个线程。

5.虚拟内存机制

Redis之所以如此之快,是因为它充分利用了内存存储、单线程模型、复杂数据结构支持、持久化机制以及响应式设计等多个因素。这些优势使Redis成为了一个高性能的键值存储系统,广泛应用于各种应用场景。

2.redis基本数据结构

string(字符串),hash(哈希),list(列表),set(无序集合)及zset(有序集合)。

3.redis使用中的三种问题(之前有写,点链接可以跳转)

缓存穿透:Redis的缓存穿透-CSDN博客

缓存击穿:redis的击穿-CSDN博客

缓存雪崩:Redis的缓存雪崩_什么是redis缓存雪崩-CSDN博客

4.布隆过滤器是什么,解决了什么问题

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。

布隆过滤器的优缺点:

优点:空间效率和查询时间都比一般的算法要好的多

缺点:有一定的误识别率和删除困难

布隆过滤器的作用是某个 key 不存在,那么就一定不存在,它说某个 key 存在,那么很大可能是存在(存在一定的误判率)。于是我们可以在缓存之前再加一层布隆过滤器,在查询的时候先去布隆过滤器查询 key 是否存在,如果不存在就直接返回

5.数据同步方案  (延迟双删是什么)

延迟双删是基于时间戳的缓存更新策略。其核心思想是在更新数据库后,先删除缓存中的数据,然后在一段时间后再次删除缓存。这样,即使在这段时间内有新的读请求导致缓存被重建,由于缓存中的数据已经被删除,所以新的读请求会重新从数据库中读取最新数据,从而保证缓存与数据库的一致性。

6.分布式锁是什么

在分布式系统中实现同步机制的技术

分布式锁的特点

为了确保分布式锁可用,至少要确保锁的实现同时满足以下四个条件:

1、互斥性:任意时刻,只能有一个客户端获取锁,不能同时有两个客户端获取到锁。

2、安全性:锁只能被持有该锁的客户端删除,不能由其它客户端删除。

3、死锁:获取锁的客户端因为某些原因(如down机等)而未能释放锁,其它客户端再也无法获取到该锁。

4、容错:当部分节点(redis节点等)down机时,客户端仍然能够获取锁和释放锁

分布式锁的实现方式:

1. 数据库乐观锁;

2. 基于ZooKeeper的分布式锁;

3.基于Redis的分布式锁

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值