当前位置: 首页 > news >正文

redis面试总结

redis的数据类型?

string字符串:类似于java中Map<String,String>。存储字符串、JSON数据、验证码等。

Hash字典:类似java中Map<String, Map<Spring,String>>。比较适合存储对象数据。

List列表:类似java中Map<String, List<String>>。有序、可重复集合。

Set集合:类似java中Map<String, Set<String>>。无序,不可重复。redis提供了交集、并集等操作。

ZSet有序集合:类似java中Map<String, Sort Set<String>>。redis中在zset中提供了score属性,可以根据score进行排序。常用于排行榜等。

什么是缓存击穿、穿透、雪崩?

缓存击穿:redis中某一个key到了过期时间,但这个key还承接着大量的并发请求,导致并发到达数据库,导致数据库压力剧增(压垮、断掉)。

解决:给key设置合理有效时间(对应热点key设置永不过期)。互斥锁(当缓存失效时,通过互斥锁来保护数据库的访问过程。当一个热点key失效时,用互斥锁方式,只让一个请求到数据库查询数据并加载到缓存)。逻辑过期(当查询缓存发现逻辑时间已过期时,会成功获取一个互斥锁,并开启一个新线程进行查询数据库重建缓存数据的操作,然后写入缓存并重置逻辑过期时间,最后释放锁。这种方法可以在缓存击穿问题发生时,避免大量请求直接访问数据库,减轻数据库压力)。

缓存穿透:查询了一个redis中不存在,并且数据库中也不存在的数据。(每次请求直达数据库)

解决:缓存空数据(key,null)。布隆过滤器(先在布隆过滤器中判断是否存在,不存在直接返回)。

缓存雪崩:在同一时间内,redis中大量的key都过期了,导致大量请求到达数据库。

解决:给不同的可以设置不同的过期时间(给过期时间添加随机姓)。利用redis集群,提高可用性。

redis的数据过期策略和数据淘汰策略?

惰性过期策略:查询一个key,判断是否过期,过期直接删除。

定期过期策略:在redis中每过一段时间,查询key是否过期,过期直接删除。

redis的过期策略是惰性过期策略加定期过期策略。查询一个key,若过期就直接删除。每隔一段时间,随机抽取一定数量的key,查询是否过期,过期直接删除。

当redis的内存满了,会触发数据淘汰策略。

redis内存不够,不删除任何数据,直接报错。(redis的默认方式)

LRU:最近最少使用。用当前时间减去最后一次访问时间,值越大被删除的优先级越高。

LFU:最少频率使用。redis中会统计每个key的访问频率,值越小被删除的优先级越高。

redis是单线程,为什么还那么快?

因为redis是纯内存操作的,redis是单线程。

每来一个请求,IO多路复用就会创建一个socket,这样redis就可以同时处理多个请求了。然后redis会把socket压到一个队列中,一个一个执行。单线程处理,并返回结果。

redis的持久化?

RDB:是基于内存快照的方式进行数据的全量备份。redis的主进程根据配置自动触发,fork一个子进程进行全量备份(二进制文件)。但redis宕机,会丢失距下一次快照时间内的数据。重启后,恢复数据快。(redis默认开启)

AOF:是基于日志文件进行数据备份。每一次Redis写操作,都记录在AOF日志中。当AOF体积大到配置值,会触发AOF重写操作,生成一个新的AOF文件。AOF比RDB文件大,重启后,恢复数据较慢。

redis分布式锁?

Redis分布式锁是由Redisson实现的。原理为setnx和lua脚本,setnx是判断key是否存在,若存在才添加,这个行为可以视为上锁。Del删除key,可以视为释放锁。

redisson有个watchDog的线程,一个线程获取锁后,watchDog会给持锁线程续期。

Redisson是可重入锁,内部有hash存储线程与重入次数,同一个线程每次获取锁会对应加1,释放锁会减1

Redisson不能解决主从数据一致的问题,但可以用redisson提供的红锁解决,但性能很低,可以用zookeeper。

主从数据同步?

一个redis的并发能力是有上限的,进一步提高并发能力就需要搭建主从集群。redis集群分为主节点,只有一个,提供读和写操作。从节点,多个,提供读操作。从节点需要与主节点进行数据同步。从节点请求同步发送自己的版本id和偏移量信息,主节点判断是否是第一次同步数据,若为第一次,(bgsave)则会fork一个子进程生成rdb文件发给子节点,子节点根据rdb进行数据同步。若不为第一次,主节点每次操作会记录到一个relp的文件,根据从节点发来的偏移量,发送记录操作。子进程根据写操作同步数据。

哨兵机制?

场景:redis是集群部署,并且还有哨兵集群。哨兵会实时监控主节点redis的情况,当一个哨兵检测主节点redis宕机,并不会主从替换,因为一个哨兵检测异常,可能因为网络的问题导致。当大部分哨兵发现主节点redis异常,会进行哨兵选举,让一个哨兵进行主从切换。(自动切换)

相关文章:

redis面试总结

redis的数据类型&#xff1f; string字符串&#xff1a;类似于java中Map<String,String>。存储字符串、JSON数据、验证码等。 Hash字典&#xff1a;类似java中Map<String, Map<Spring,String>>。比较适合存储对象数据。 List列表&#xff1a;类似java中Ma…...

大模型日报2024-06-24

大模型日报 2024-06-24 大模型资讯 大模型产品 AI快速生成专业播客 摘要: MakePodcast.io使用AI语音&#xff0c;只需提供脚本并选择声音&#xff0c;即可在几分钟内生成专业质量的播客。 Sherloq&#xff1a;SQL用户的AI协作仓库 摘要: Sherloq为SQL查询提供一站式管理&#x…...

深入理解计算机系统 CSAPP 练习题7.4

A:0x4004e8(-4)-50x4004df B:0x5...

摘苹果-第13届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第88讲。 摘苹果&#xff0…...

开源项目推荐-vue2+element+axios 个人财务管理系统

文章目录 financialmanagement项目简介项目特色项目预览卫星的实现方式&#xff1a;首次进入卫星效果的实现方式&#xff1a;卫星跟随鼠标滑动的随机效果实现方式&#xff1a;环境准备项目启动项目部署项目地址 financialmanagement 项目简介 vue2elementaxios 个人财务管理系…...

手机数据如何恢复?11 款最佳安卓手机恢复软件

媒体可能由于各种原因而从您的设备中删除&#xff0c;可能是意外或病毒攻击。 在这些情况下&#xff0c;照片恢复应用程序是唯一的解决方案。理想的照片恢复应用程序取决于各种因素&#xff0c;例如存储设备的损坏程度、删除照片后的持续时间以及应用程序使用的恢复算法的有效性…...

大语言模型千问2的web搭建(streamlit)

Qwen2的web搭建(streamlit) 千问2前段时间发布了&#xff0c;个人觉得千问系列是我用过最好的中文开源大模型&#xff0c;所以这里基于streamlit进行一个千问2的web搭建&#xff0c;来进行模型的测试 一、硬件要求 该文档中使用的千问模型为7B-Instruct&#xff0c;需要5g以…...

守护生产车间安全:可燃气体报警器预警与检测的重要性

近日&#xff0c;东莞一材料厂发生的火灾事故再次敲响了工业安全生产的警钟。 这起事故不仅给工厂带来了巨大的经济损失&#xff0c;也暴露了一些企业在安全管理方面的疏漏。其中&#xff0c;可燃气体报警器的应用与预警功能在火灾防范中扮演了至关重要的角色。 接下来&#…...

[创业之路-125] :制造业企业的必备管理神器-ERP-计算的资源管理与企业的资源管理的异同

目录 一、计算机的资源与企业资源相同点与不同点 1.1 相同点&#xff1a; 1.2 不同点&#xff1a; 二、计算机的内存管理与企业的库存管理相同点与不同点 2.1 相同点&#xff1a; 2.2 不同点&#xff1a; 一、计算机的资源与企业资源相同点与不同点 计算机的资源与企业资…...

TDengine Cloud 新增签约,这次是能源物联网平台

最近&#xff0c;全托管的物联网、工业大数据云服务平台 TDengine Cloud 新增一项签约&#x1f973;。为进一步提升平台的数据处理能力与系统稳定性&#xff0c;推动智能设备数据管理和能效优化到新的高度&#xff0c; 德中恒越物联网数据平台选择应用 TDengine Cloud ☁️。 …...

Kafka 最佳实践:构建高性能、可靠的数据管道

目录 1. 部署最佳实践 1.1 硬件配置 1.2 集群配置 1.3 ZooKeeper 配置 2. 主题和分区设计 2.1 分区设计 2.2 数据保留策略 3. 生产者最佳实践 3.1 生产确认机制 3.2 重试机制 3.3 批量发送 4. 消费者最佳实践 4.1 消费组管理 4.2 并行处理 4.3 错误处理 5. 安全…...

进军韩国5G市场!移远通信5G模组RG500L-EU率先获得KT、LGU+认证

近日&#xff0c;移远通信工规级5G模组RG500L-EU再传喜讯&#xff0c;率先通过了韩国两大运营商KT和LGU的严格认证。​在此之前&#xff0c;该模组已顺利通过KC认证&#xff08;韩国法规认证&#xff09;&#xff0c;此次再获运营商认证表明&#xff0c;RG500L-EU已完全满足韩国…...

http/2 二进制分帧层 (Binary Framing Layer)讲解

文章目录 二进制帧HTTP/2 中的帧、消息和流1. 帧&#xff08;Frame&#xff09;2. 消息&#xff08;Message&#xff09;3. 流&#xff08;Stream&#xff09;总结示例&#xff1a; 二进制帧结构1.帧头部结构2.帧负载数据 请求和响应多路复用 链接参考&#xff1a;https://web.…...

Mybatis分页查询,同时返回total

在垃圾项目中一般都是使用mybatis plus自动返回Page,但是涉及到多表联合或者等等情况最终还是要使用mybatis进行手写sql查询,所以有此文章以便后续使用查询. 首先mysql需要支持多条查询语句,在mysql配置url后加上: &allowMultiQueriestrue&useAffectedRowstrue Mapper…...

JDK17新增语法特征

1、引言 Spring Boot 3.0 开始不再支持 JDK 8&#xff0c;转而支持 JDK 17。 这篇博客我会列举较常用的新语法特性。 2、新增语法特征 2.1 yield关键字 从Java13开始引⼊yield关键字&#xff0c;yield关键字应用于switch语句中&#xff0c;我们可以使用yield来简化代码。 正常的…...

2748. 美丽下标对的数目(Rust暴力枚举)

题目 给你一个下标从 0 开始的整数数组 nums 。如果下标对 i、j 满足 0 ≤ i < j < nums.length &#xff0c;如果 nums[i] 的 第一个数字 和 nums[j] 的 最后一个数字 互质 &#xff0c;则认为 nums[i] 和 nums[j] 是一组 美丽下标对 。 返回 nums 中 美丽下标对 的总…...

Vue中双向数据绑定是如何实现的

在 Vue.js 中&#xff0c;双向数据绑定&#xff08;也称为响应式系统&#xff09;是通过其内部实现的一个系统来实现的&#xff0c;该系统可以追踪数据的变化&#xff0c;并在数据变化时自动更新 DOM。Vue 使用了一种称为“观察者-订阅者”的模式来实现这一点。 以下是 Vue 双…...

桌面云和云桌面的区别联系

桌面云和云桌面是两个相关但不完全相同的概念。桌面云是一种基于云计算技术的解决方案&#xff0c;将用户的桌面环境&#xff08;包括操作系统、应用程序和数据&#xff09;移至云端进行管理和交付&#xff0c;而云桌面是在服务器上虚拟化的桌面环境&#xff0c;用户通过网络连…...

ECMAScript6介绍及环境搭建

这实际上说明&#xff0c;对象的解构赋值是下面形式的简写。 let { foo: foo, bar: bar } { foo: ‘aaa’, bar: ‘bbb’ }; 也就是说&#xff0c;对象的解构赋值的内部机制&#xff0c;是先找到同名属性&#xff0c;然后再赋给对应的变量。真正被赋值的是后者&#xff0c;而…...

什么是Azure OpenAI?

Azure OpenAI 是微软与 OpenAI 合作推出的人工智能服务&#xff0c;旨在通过 Azure 云平台提供 OpenAI 的先进模型和技术。这个服务允许开发者和企业使用 OpenAI 的强大语言模型&#xff08;如 GPT-3、Codex 和 DALL-E 等&#xff09;来创建智能应用和解决方案。以下是一些主要…...

一个易于使用、与Android系统良好整合的多合一游戏模拟器

大家好&#xff0c;今天给大家分享的是一个易于使用、与Android系统良好整合的多合一游戏模拟器 Lemuroid。 Lemuroid 是一个专为Android平台设计的开源游戏模拟器项目&#xff0c;它基于强大的Libretro框架&#xff0c;旨在提供广泛的兼容性和卓越的用户体验。 项目介绍 Lem…...

java spring注解的使用

Java Spring框架中的注解用于简化代码的编写和配置工作。它们提供了一种简洁、强大和灵活的方式来定义和配置Spring应用程序。 下面是一些常用的Java Spring注解的使用示例&#xff1a; Component: 标记一个类为Spring容器管理的Bean&#xff0c;可用于任何类。 Component p…...

什么是数据同步?数据同步时发生中断怎么办?

数据同步是将数据从一个系统或平台复制到另一个系统或平台的过程。在现代信息化时代&#xff0c;数据同步变得越来越重要&#xff0c;因为组织需要在不同的系统之间共享数据&#xff0c;并确保数据的准确性和一致性。本文将介绍什么是数据同步以及数据同步中常出现的问题&#…...

HarmonyOS Next开发学习手册——ExtensionAbility

概述 EmbeddedUIExtensionAbility 是EMBEDDED_UI类型的ExtensionAbility组件&#xff0c;提供了跨进程界面嵌入的能力。 EmbeddedUIExtensionAbility需要和 EmbeddedComponent 一起配合使用&#xff0c;开发者可以在UIAbility的页面中通过EmbeddedComponent嵌入本应用的Embed…...

如何开发企业微信SCRM

企业微信SCRM&#xff08;Social Customer Relationship Management&#xff09;是一种用于管理和优化企业与客户关系的工具&#xff0c;它整合了社交媒体和CRM系统&#xff0c;帮助企业更有效地跟进销售线索、提供客户服务和进行市场营销。以下是开发企业微信SCRM的一些关键步…...

Java中的标准注解与数据校验:深入解析与实例

目录 Java中的标准注解与数据校验&#xff1a;深入解析与实例1. 基础校验注解NonNullNotBlankSize 2. 数值校验注解Min & MaxPositive & Negative 3. 枚举与模式匹配自定义注解示例&#xff08;概念性展示&#xff09; 4. 自定义校验逻辑结论 Java中的标准注解与数据校…...

模型泛化性测试

文章目录 准备工作场景描述训练数据集获取与训练 测试结论测试方案外机进行平移外机进行旋转外机即平移又旋转该螺纹孔位置 准备工作 场景描述 场景搭建如下如所示&#xff1a; 在该场景中&#xff0c;将机器人安置在桌子左上角处&#xff08;以面对显示器的视野&#xff09…...

智能推荐系统:技术解析与实践指南

智能推荐系统&#xff1a;技术解析与实践指南 背景与挖掘目标 在互联网信息爆炸的今天&#xff0c;用户在海量内容中筛选感兴趣的信息变得日益困难。因此&#xff0c;搜索引擎结合推荐系统的模式应运而生。本章节将深入探讨推荐系统&#xff0c;其核心目标如下&#xff1a; …...

盛元广通数字孪生智能集控实验室管理系统

盛元广通数字孪生智能集控实验室管理系统可广泛应用于各类实验室场景&#xff0c;包括科研实验室、教学实验室、工业实验室等。通过实时监测、预测性维护、故障诊断与优化等功能&#xff0c;该系统能够提高实验室的运行效率、安全性和可靠性&#xff0c;降低运维成本。设计直观…...

Spring Boot 优雅进行数据脱敏

文详细解析在Spring Boot应用中优雅地脱敏敏感信息&#xff0c;如手机号、邮箱、身份证等&#xff0c;使用的是Jackson库中的JsonSerializer。 1. 创建自定义脱敏序列化器 首先&#xff0c;创建一个继承自JsonSerializer<String>的序列化器。以MobileSerializer为例&am…...