Redis面试题——第一篇

1. Redis使用场景有哪些

与传统数据库不同的是Redis的数据是存在内存中的,也就是说他是内存数据库,所以读写速度非常快,因此Redis被广泛用于缓存方向。
Redis的使用场景除了做缓存外,也经常用来做分布式锁,甚至是消息队列。 Redis提供了多种数据类型来支持不同的业务场景。

2. Redis和Memcache的区别和共同点

共同点:

  1. 都是基于内存的数据库,一般都用来当作缓存使用。
  2. 都有过期策略
  3. 两者性能都非常高。

区别:

  1. Redis支持 更丰富的数据类型(支持更复杂的应用场景)。Redis不仅支持简单的k/v类型的数据,同时还提供list、set、zset、hash等结构的存储。Memcache只支持最简单的k/v数据类型。
  2. Redis支持数据的持久化, 可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memcache把数据全部存在内存中。
  3. Redis有灾难恢复机制,可以把缓存中的数据持久化到磁盘上。
  4. Memcache没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;但是Redis目前是原生支持cluster模式。
  5. Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的多路IO复用模型。
  6. Redis支持发布订阅模型,Lua脚本、事务等。
  7. Memcached过期数据的删除策略只用了惰性删除,而Redis同时使用了惰性删除+定期删除。

3. Redis BitMap的用法

bitMap存储的是连续的二进制数字(0和1),通过bitmap,只需要一个bit位来表示某个元素对应的值或者状态。key就是对应元素本身。因为8个bit可以组成一个byte,所以bitmap本身会极大的节省存储空间。
常用命令:setbit、getbit、bitcount、bitop
应用场景:适合需要保存状态信息(比如是否签到、是否登录。。。)
例如,很多网站为了分析用户的喜欢,需要研究点赞过的内容
setbit beauty_girl_oo1 uid 1 //记录喜欢过001号小姐姐

4. 说一下Redis哈希槽的概念

Redis集群没有一致性hash,而是引入了哈希槽的概念,Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。

5. Redis为什么是单线程的

  1. Redis的性能瓶颈不在CPU、主要在内存和网络
  2. 多线程就会存在死锁、线程上下文切换等问题,甚至会影响性能。

6. Redis6.0之后为何引入了多线程

Redis6.0引入多线程主要是为了提高网络IO读写性能,因为这个算是Redis中的性能瓶颈(Redis中的性能瓶颈主要受限于内存和网络)。
虽然,Redis6.0引入了多线程,但是Redis的多线程只是在网络数据的读写这类耗时操作上使用了,执行命令仍然是单线程顺序执行。

7. 过期数据的删除策略

常用的过期数据的删除策略就两个

  1. 惰性删除:只会在取出key的时候才对数据进行过期检查。这样对CPU友好,但是可能会造成太多过期key没有被删除。
  2. 定期删除:每隔一段时间抽取一批key执行删除过期key操作。并且,Redis底层会通过限制删除操作执行的时长和频率来减少操作删除对CPU时间的影响。

定期删除对内存更加友好,惰性删除对CPU更加友好。两者各有千秋,所以Redis采用的是定期删除+惰性删除策略。

8. Redis淘汰策略有哪些

Redis提供6种数据淘汰策略

  1. volatile-lru:从已经设置过期时间的数据集中挑选出最近最少使用的数据淘汰。
  2. volatile-random:从已经设置过期时间的数据集中随机淘汰。
  3. volatile-ttl: 从已经设置过期时间的数据集中挑选将要过期的数据淘汰。
  4. allkeys-lru: 从所有的key中,选择最近最少使用的淘汰
  5. allkeys-ttl:从所有key中,选择即将过期的淘汰
  6. allkeys-random:从所有key中,随机选择数据淘汰。

9. Redis持久化有几种方式

Redis不同于Memcache的重要一点是,Redis支持持久化,且提供两种持久化方式,分别是快照(RDB)、追加写入(AOF)。

  • 快照持久化(RDB):Redis可以通过创建快照来获得存储在内存中的数据在某个时间点上的副本。Redis创建快照之后,可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本。还可以将快照留在原地以便重启服务器的时候使用。
    快照持久化是Redis默认采用的持久化方式,在Redis.conf配置文件中默认有以下配置
save 900 1. # 900s以后,如果至少有一个key发生变化,Redis就会自动触发BGSAVE
save 300 10  # 300s以后,如果至少有10个key发生变化,Redis就会自动触发BGSAVE
save 60 10000 # 60s以后,如果至少有10000个key发生变化。
  • AOF:与快照持久化相比,AOF持久化的实时性更好,因此已经成为主流的持久化方案。默认情况下Redis没有开启AOF方式的持久化,可以通过appendonly参数开启。开启AOF持久化每执行一条会更改Redis中数据的命令,Redis就会将该命令写入磁盘中的AOF文件。
appendonly yes

在Redis的配置文件中存在三种不同的AOF持久化方式,他们分别是:

appendfsync always.   #每次有数据修改时都会写入AOF文件
appendfsync everysec.  #每秒钟同步一次,显示的将多个写命令同步到磁盘
appendfsync no. # 让操作系统决定何时进行同步

为了兼顾数据和写入性能,用户可以考虑appendfsync everysec选项,让Redis每秒同步一次AOF文件,Redis性能几乎没受到任何影响,而且,这样即使出现系统崩溃,用户最多只会丢失一秒之内的数据。

10. pipeline有什么好处,为什么要用pipeline

Redis中的pipeline可以将多次IO往返的时间缩减为1次

11. 缓存穿透和缓存击穿和缓存雪崩

缓存击穿是指缓存中 某个热点数据 在过期或者被删除后,突然失效,导致大量请求同时到达数据库。
缓存穿透:是指请求缓存中根本不存在的数据。同时在数据库中也不存在,导致每次请求都需要去数据库查询一遍。
缓存雪崩:指缓存中大量数据同时失效。

12. 怎么保证缓存和数据库数据的一致性

合理设置缓存的过期时间
新增、更改、删除数据库操作时同步更新Redis,可以使用事务机制保证数据的一致性。

13. Redis如何做延迟队列

使用SortedSet,拿时间戳作为score,消息内容作为key,调用zadd来生产消息, 消费者使用zrangebyscore指令获取N秒之前的数据轮询进行处理。

`

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1542504.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Windows下 批量重命名文件【bat实现】-两个小问题

Windows下 批量重命名文件【bat实现】_bat批量重命名文件ren-CSDN博客 上面是原来的教程,我遇到了两个小问题,问题及解决如下: ①dir/b>rename.csv : 无法将“dir/b>rename.csv”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。…

【每天学个新注解】Day 2 Lombok注解简解(一)—@Data、@Build、@Value

Data 相当于同时使用了 Getter 、Setter 、RequiredArgsConstructor、ToString、EqualsAndHashCode 1、如何使用 需要同时使用Getter 、Setter 、RequiredArgsConstructor、ToString、EqualsAndHashCode注解一个Bean的时候。 2、代码示例 例: Data public cla…

CCC SPAKE2+流程解析

1、SPAKE2流程及SCP03通道介绍 SPAKE2流程发生在CCC车主配对过程中的Phase2。 SPAKE2流程为车辆和手机之间的数据交换建立了一个安全通道SCP03。 那这个SCP03通道是干啥的? 我们可以先简单的理解为:建立安全通道前,车辆和手机之间交互的AP…

剖解反转链表

剖解反转链表 思路: 1.若链表为空或者只存在一个节点,就无需反转,直接返回head 2.若存在多个节点 首先将head.next给到cur,并将head.next置为null 剩余的节点就利用头插法,反转链表 class Solution {public ListNo…

基于SpringBoot+Vue+MySQL的特色旅游网站系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着旅游业的蓬勃发展,人们对旅游体验的需求日益多样化与个性化。传统的旅游信息查询与预订方式已难以满足现代游客的需求。因此,我们开发了这款基于SpringBootVueMySQL的特色旅游网站系统。该系统旨在通…

MySQL高阶1917-Leetcodify好友推荐

目录 题目 准备数据 分析数据 总结 题目 为 Leetcodify 用户推荐好友。我们将符合下列条件的用户 x 推荐给用户 y : 用户 x 和 y 不是好友,且用户 x 和 y 在同一天收听了相同的三首或更多不同歌曲。 注意,好友推荐是单向的&#xff0c…

web前端字段大小写下划线转换工具

文章目录 前言一、如何使用?二、相关代码总结 前言 程序员在敲代码的过程中都要命名一些字段,但是Java语言对字段的命名规范和sql命名规范不一样,如下图所示,这种机械性的转换工作很劳神费力,为了省点劲写了一个web小…

pdf怎么编辑修改内容?试试这四款工具!

作为一个经常探索各种办公软件的人,今天我打算和大家聊聊一个我们工作中经常会遇到的问题——编辑PDF文件。我们都知道,PDF文件以其格式稳定、不易被篡改而受到青睐,但这也意味着一旦需要修改内容,就变得相当棘手。不过&#xff0…

设计模式之类结构模式例题

答案:B A 知识点: 设计模式中类结构模式分别是:工厂方法模式,适配器模式,模板方法模式,解释器模式 记忆方法:公司里有个模特小姐姐,公是工厂模式,司是适配器模式&…

Mapper代理

文章目录 Mapper代理路径一定要写对Mapper代理方式加载配置文件 (包扫描的方式) Mapper代理 好像就是能 包名.方法。 反正就是防止硬编码,更灵活,更适用。 路径一定要写对 Mapper代理方式加载配置文件 (包扫描的方式…

fiddler抓包08_抓Android手机请求

课程大纲 手机抓包,电脑端的设置和IOS端相同,设置一次即可,无需重复设置。 前提:电脑和手机连接同一个局域网 土小帽电脑和手机都连了自己的无线网“tuxiaomao”。 Step1. 电脑端设置 ① 打开Fiddler - 开启抓包(F12…

Windows下如何定时执行自定义任务

目录 一.前言二.设置定时自动执行自定义任务 一.前言 本文环境是Windows11系统。 有时候我们希望能够在Windows下定时自动执行自定义任务,比如检测数据库服务的状态。那在Windows下怎么定时自动执行自定义任务,这篇文章介绍一种方法。 二.设置定时自动…

计算机毕业设计推荐-基于python的电子图书阅读推荐平台【源码+文档+讲解】

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于python的电子图书阅读推…

吴津雨银洁刘雅雯获得国际超模大赛四川总决赛网络组三甲

9月8日众人期盼已久的都江堰杯2024国际超模大赛四川总决赛在三遗之城都江堰落下帷幕。国际超模大赛已经举办第12个年头,每年为时尚界、模特界输送无数的优秀时尚模特人才,让世界超模中出现更多的中国面孔。大赛在全球已经布局多个国家及地区,…

项目第七弹:消费者管理模块

项目第七弹:消费者管理模块 一、为何要有这个模块?二、消费者是否需要持久化?三、怎么设计?1.如何抽象描述?1.回想一下基于生产消费模型的线程池2.如何组织3.消息处理与确认问题的解决4.自动确认标志5.消费者代码 2.队…

【计算机组成原理】主存储器深度解析

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

DETR论文翻译与理解

DETR(Detection with transformer) DETR:End to End Object Detection with Transformer 论文链接:2005.12872 (arxiv.org) 参考视频:https://www.bilibili.com/video/BV1GB4y1X72R/?spm_id_from333.788&vd_…

JBoss反序列化漏洞CVE-2017-12149

1.环境搭建 cd vulhub-master/jboss/CVE-2017-12149 docker-compose up -d 2.访问漏洞地址 3.漏洞验证 http://47.121.211.205:8080/invoker/readonly 返回500说明漏洞存在 4.使用漏洞进行利用 直接执行命令

人脸识别换装技术实现记录-1

最近,研究了下人脸识别换装,确定了技术方案和技术路线,并最终实现了想要达成的效果,现将制作过程中遇到的问题以及实现的过程记录下来,以便回顾总结的同时,也和其他想实现人脸识别换装的同学分享下经验,避免踩坑。 本项目主要是在Android系统上实现人脸换装的效…

简单图解一下线性注意力机制

知乎:刀刀宁链接:https://zhuanlan.zhihu.com/p/718156896 线性注意力机制的文章有很多了,在本篇笔记中,我们简单地对各种方法进行一下图解比较,串一下当前的线性注意力机制,涉及的公式极少,主要…