web前端求职时都会被问到的redis面试题分享

程序员的小傲娇 程序员的小傲娇     2023-01-27     576

关键词:

Web前端人员怎么求职?Redis面试题有哪些?Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。很多人在Web前端求职时都会被问到Redis相关问题,尤其是在BRT类名企,接下来小千就给大家分享一下。

1、Redis相比memcached有哪些优势?

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

  2. redis的速度比memcached快很多;

  3. redis可以持久化其数据。

2、Redis有哪几种数据淘汰策略?

noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大部分的写入指令,但DEL和几个例外)。

allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。

volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。

allkeys-random: 回收随机的键使得新添加的数据有空间存放。

volatile-random: 回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。volatile-ttl: 回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放。

3、Redis是单线程还是多线程?有何优势?

Redis是单线程,但是Redis 6发布后,它其实是支持多线程的。Redis是多线程的优势有两点:

1)单线程Redis的性能瓶颈主要在于网络的IO消耗,所以我们在优化的方向就是要提高网络IO性能。

2)Redis 6 引入的多线程IO特性对性能提升至少是一倍以上。Redis的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程。

4、Redis主从复制会出现哪些问题?

1)一旦主节点宕机,从节点晋升为主节点,同时需要修改应用方的主节点地址,还需要命令所有从节点去复制新的主节点,整个过程需要人工干预。

2)主节点的写能力受到单机的限制。

3)主节点的存储能力受到单机的限制。

4)原生复制的弊端在早期的版本中也会比较突出,比如:redis复制中断后,从节点会发起psync。此时如果同步不成功,则会进行全量同步,主库执行全量备份的同时,可能会造成毫秒或秒级的卡顿。

5、为什么Redis需要把所有数据放到内存中?

Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以Redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响Redis的性能。在内存越来越便宜的今天,Redis将会越来越受欢迎。

如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。

6、有哪些Redis分区实现方案?

客户端分区就是在客户端就已经决定数据会被存储到哪个Redis节点或者从哪个Redis节点读取。大多数客户端已经实现了客户端分区。代理分区 意味着客户端将请求发送给代理,然后代理决定去哪个节点写数据或者读数据。

代理根据分区规则决定请求哪些Redis实例,然后根据Redis的响应结果返回给客户端。Redis和memcached的一种代理实现就是Twemproxy查询路由(Query routing) 的意思是客户端随机地请求任意一个Redis实例,然后由Redis将请求转发给正确的Redis节点。

Redis Cluster实现了一种混合形式的查询路由,但并不是直接将请求从一个Redis节点转发到另一个Redis节点,而是在客户端的帮助下直接redirected到正确的Redis节点。

7、Redis持久化数据和缓存怎么做扩容?

如果Redis被当做缓存使用,使用一致性哈希实现动态扩容缩容。如果Redis被当做一个持久化存储使用,必须使用固定的keys-to-nodes映射关系,节点的数量一旦确定不能变化。否则的话(即Redis节点需要动态变化的情况),必须使用可以在运行时进行数据再平衡的一套系统,而当前只有Redis集群可以做到这样。

8、Redis与其他key-value存储有什么不同?

Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是, 相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。 同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

想了解更多Redis面试题及答案,欢迎关注小千,后期会继续分享Web前端相关技术知识。

本文来自​​千锋教育​​,转载请注明出处。

深度分享:面试阿里,字节跳动,美团90%会被问到的hashmap知识(代码片段)

一,HashTable哈希表,它相比于hashMap结构简单点,它没有涉及红黑树,直接使用链表的方式解决哈希冲突。我们看它的字段,和hashMap差不多,使用table存放元素privatetransientEntry<?,?>[]table;privatetransientintcount;privateintthreshold;private... 查看详情

关于物流项目面试可能会被问到的20题总结

文章目录1.简单介绍一下该项目5.数据来源及数据采集11、数据采集如何完成12、数据量大小3.技术架构(技术选项及框架版本)18、离线数仓数仓分层的作用是什么?我来介绍我们这个项目用到的模型:使用到了拉链表7.业务报表... 查看详情

面试阿里,字节跳动,腾讯90%会被问到的面试题——单例模式(代码片段)

1.什么是Singleton?Singleton,即单例,在Java中表示的是单例模式,所谓的单例模式,指的就是在程序中,有且仅有一个该实例对象。单:唯一,单独。例:实例对象。2.单例模式有几种创建方式?2.1饿汉式(在程序启动过程中,就... 查看详情

深度分析:面试阿里,字节跳动,美团几乎都会被问到的阻塞队列

基本概念阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。2)支持阻塞的移除方... 查看详情

深度分析:面试阿里,字节跳动,美团几乎都会被问到的阻塞队列(代码片段)

基本概念阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。2)支持阻塞的移除方... 查看详情

面试阿里,腾讯90%会被问到的25个问题,附答案!(代码片段)

想要确保您的下一次Java面试成功吗?查看这篇文章,了解有关常见Java面试问题的更多信息,以及面试技巧!简介作为最广泛使用和部署的语言,Java是Web领域的三大核心技术之一。它由JamesGosling,PatrickNaughton和MikeSheridan于1991年... 查看详情

面试阿里,字节跳动,腾讯90%会被问到的面试题——单例模式(代码片段)

1.什么是Singleton?Singleton,即单例,在Java中表示的是单例模式,所谓的单例模式,指的就是在程序中,有且仅有一个该实例对象。单:唯一,单独。例:实例对象。2.单例模式有几种创建方式?2.1饿汉式(在程序启动过程中,就... 查看详情

2018前端面试题(不定期更新)

前端基础面试题  以下更多的题目,希望大家能掌握更多的前端知识,发现自身的不足。不单单是看题目,背答案。面试题应该反映出的只是你掌握前端知识的冰山一角。别把冰山全貌给展现出来咯  HTML/CSS 1、... 查看详情

面试阿里,字节跳动99%会被问到的java线程和线程池,看完这篇你就懂了!

前言:最近也是在后台收到很多小伙伴私信问我线程和线程池这一块的问题,说自己在面试的时候老是被问到这一块的问题,被问的很头疼。前几天看到后帮几个小伙伴解决了问题,但是问的人有点多我一个个回答也回答不过来... 查看详情

web前端面试经常问到的面试题都有哪些

Web前端经常被问到的面试题及答案一、HTML+CSS1.对WEB标准以及W3C的理解与认识标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用... 查看详情

去阿里面试redis中那些常被问到的面试点

1.什么是Redis?Redis(RemoteDictionaryServer)是一个使用C语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。Redis可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五... 查看详情

那些年我们前端面试中经常被问到的题!(代码片段)

1.const的值什么时候可以修改对于基本类型来说const定义的就是一个常量,一旦被赋值(初始化)就不可以修改。定义一个常量但是不赋值(初始化),会报错:Missinginitializerinconstdeclaration;如果修改一个常量则会报错:Assigmenttoconstantvariable。... 查看详情

那些年我们前端面试中经常被问到的题!(代码片段)

1.const的值什么时候可以修改对于基本类型来说const定义的就是一个常量,一旦被赋值(初始化)就不可以修改。定义一个常量但是不赋值(初始化),会报错:Missinginitializerinconstdeclaration;如果修改一个常量则会报错:Assigmenttoconstantvariable。... 查看详情

史上最全!2020面试阿里,字节跳动90%被问到的jvm面试题(附答案)

前言:最近老是收到小伙伴的私信问我能不能帮忙整理出一份JVM相关的面试题出来,说自己在大厂去面试的时候这一块问的是特别多的,每次自己学的时候每次都学不到重点去。这不他来了,一份详细的JVM面试真题给大家整理在... 查看详情

面试阿里,字节跳动90%会被问到的微服务,你确定不进来看看吗?

1、您对微服务有何了解?微服务:又称微服务架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合。通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使... 查看详情

面试阿里,字节跳动美团90%会被问到的面试题内部类,你还没掌握吗?(代码片段)

...类的内部定义,但是是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。(2).内部类也需要实例化才能访问(3).内部类声明成静态的,就不能随便访问外部类的成员变量了,此时内... 查看详情

web前端面试,被问到ajax如果获取到一个页面的内容,如何渲染到页面呢

参考技术A动态插入页面里面咯 查看详情

vue面试常被问到的问题整理(代码片段)

...来劫持到各个属性的getter setter,在数据变动的时候,会被observer观察到,会通过Dep通知数据的订阅者watcher,之后进行相应的视图上面的变化具体实现步骤,感兴趣的可以看看第一步:需要 查看详情