【每日面试题】精选java面试题之redis
- Redis是什么?为什么要使用Redis?
Redis是一个开源的高性能键值对存储数据库。它提供了多种数据结构,包括字符串、列表、集合、有序集合、哈希表等。Redis具有快速、可扩展、持久化、支持多种数据结构等特点,适用于缓存、消息队列、排行榜等场景。
- Redis的常见数据结构有哪些?
Redis的常见数据结构包括字符串、列表、集合、有序集合和哈希表。
- Redis的持久化方式有哪些?
Redis提供了两种持久化方式:RDB和AOF。
- RDB是将Redis在某个时间点的数据保存到硬盘上,以文件的形式存储。通过恢复这个文件,可以还原Redis的数据。适合备份、全量恢复等场景。
- AOF(Append Only File)是将Redis的操作日志以追加的方式保存到硬盘上,以文本的形式存储。通过重新执行这些操作,可以还原Redis的数据。适合灾难恢复、增量恢复等场景。
- Redis的数据淘汰策略有哪些?
Redis的数据淘汰策略包括:
- volatile-lru:从已设置过期时间的数据集中删除最近最少使用的数据;
- volatile-ttl:从已设置过期时间的数据集中删除即将过期的数据;
- volatile-random:从已设置过期时间的数据集中随机删除数据;
- allkeys-lru:从所有数据集中删除最近最少使用的数据;
- allkeys-random:从所有数据集中随机删除数据;
- no-eviction:禁止删除数据,即空间不足时不做任何淘汰操作。
- Redis的主从复制是什么?有什么用?
Redis的主从复制是指将一个Redis实例(主节点)的数据复制到其他Redis实例(从节点)上。主节点将写操作(包括数据修改、删除等)广播给所有从节点,从节点将操作应用到自己的数据集上。
主从复制有以下用途:
- 实现数据的备份与恢复:主节点故障时,可以通过从节点恢复数据;
- 实现读写分离:主节点负责写操作,从节点负责读操作,提高系统的并发能力;
- 实现高可用性:主节点故障时,从节点可以接替主节点继续提供服务。
- Redis的发布订阅功能是什么?
Redis的发布订阅功能是指可以将消息发送给多个客户端,这些客户端可以订阅与之相关联的频道,并在有消息发布到该频道时收到通知。该功能可以用于实现实时消息推送、事件通知等场景。
- Redis的事务是怎样实现的?
Redis的事务使用MULTI、EXEC、WATCH和DISCARD等命令实现。MULTI命令表示开启一个事务,EXEC命令表示执行事务中的命令,WATCH命令用于在执行事务前监视一个或多个键,如果这些键在执行期间被修改,则事务会被放弃;DISCARD命令用于放弃一个事务。
- Redis的线程模型是什么?
Redis使用单线程模型,采用多路复用机制来处理客户端的连接请求。它通过一个事件循环(Event Loop)来接收客户端的请求,并使用非阻塞IO来处理请求。这种线程模型能够高效地处理大量的并发请求。
- Redis的缓存穿透和缓存击穿是什么?如何解决?
- 缓存穿透是指查询一个不存在的数据,导致每次查询都会去数据库查询,而不会命中缓存。可以通过为不存在的数据设置一个特殊的值,比如null或-1,来缓存起来,避免频繁查询数据库。
- 缓存击穿是指一个热点数据过期或失效,导致大量的请求直接穿透缓存,直接查询数据库。可以通过给热点数据设置较长的过期时间,或使用互斥锁来避免缓存击穿。
- Redis的pipeline有什么作用?
Redis的pipeline可以将多个命令一次性发送给服务器执行,减少网络通信的开销。可以将多个读操作或写操作合并在一起执行,提高系统的性能。但要注意,pipeline并不能减少服务器端的计算和IO开销。
- Redis的分布式锁是怎样实现的?
Redis的分布式锁可以使用SETNX命令结合超时设置来实现。使用SETNX命令尝试获取锁,如果返回1表示获取锁成功,可以执行业务逻辑;如果返回0表示获取锁失败,需要等待一段时间后再次尝试。为了避免死锁,可以为锁设置一个超时时间,当锁超时后自动释放。
- Redis的哨兵模式是什么?有什么作用?
Redis的哨兵模式是一种主从复制的高可用性解决方案,通过监控主节点和从节点的状态来实现故障转移。哨兵节点会定期检测主节点和从节点的状态,当主节点故障时,会选择一个从节点升级为主节点,然后通知其他从节点更新配置。
哨兵模式的作用是:
- 实现高可用性:主节点故障时,可以自动切换到从节点继续提供服务;
- 自动故障恢复:当主节点恢复后,可以自动将其设置为从节点,保证数据的一致性;
- 配置更新通知:当主节点切换或恢复时,可以通知其他从节点更新配置。
- Redis的集群模式是什么?有什么特点?
Redis的集群模式是一种分布式的高可用性解决方案,通过将数据分片存储在不同的节点上来实现数据的扩展。集群模式中的每个节点都可以同时提供读和写操作,节点之间通过内部总线进行通信。
集群模式的特点包括:
- 数据分片:将数据分散存储在不同的节点上,提高数据的存储能力;
- 自动故障转移:当节点故障时,会自动将故障节点的数据迁移到其他节点上;
- 水平扩展:可以通过增加节点的数量来扩展集群的容量。
- Redis如何保证数据的一致性?
Redis通过主从复制、哨兵模式和集群模式来保证数据的一致性。主从复制和哨兵模式可以实现主节点的故障转移和自动恢复,保证数据的可用性;集群模式通过将数据分片存储在多个节点上来提高数据的存储能力,并通过分片槽迁移来保证数据的一致性。
- Redis如何解决缓存击穿问题?
Redis可以通过给热点数据设置较长的过期时间来避免缓存击穿。当一个热点数据即将过期时,使用一个后台线程更新该数据的缓存。这样,即使在缓存过期期间有大量的请求访问该热点数据,也能够命中缓存。
相关文章:
【每日面试题】精选java面试题之redis
Redis是什么?为什么要使用Redis? Redis是一个开源的高性能键值对存储数据库。它提供了多种数据结构,包括字符串、列表、集合、有序集合、哈希表等。Redis具有快速、可扩展、持久化、支持多种数据结构等特点,适用于缓存、消息队列…...

OSCP 靶场 - Vault
端口扫描 nmap nmap -O 192.168.162.172 smb枚举 smbmap(kali自带) //枚举GUEST用户可以使用的目录 smbmap -u GUEST -H 192.168.162.172 NTLMrelay—smbrelay 1.制作钓鱼文件 使用GitHub - xct/hashgrab: generate payloads that force authentication against an attacker…...
uniapp子组件向父组件传值
目录 子组件向父组件传值子组件1子组件2 父组件最后 子组件向父组件传值 子组件1 <template><view class"content"><view v-for"(item,index) in list" :key"index">{{item}}</view></view> </template>&…...
过滤特殊 微信昵称
$nickName preg_replace(/[\xf0-\xf7].{3}/, , $userData[nickName]);...
LLM、AGI、多模态AI 篇一:开源大语言模型简记
文章目录 系列开源大模型LlamaChinese-LLaMA-AlpacaLlama2-ChineseLinlyYaYiChatGLMtransformersGPT-3(未完全开源)BERTT5QwenBELLEMossBaichuan...

微信小程序中获取用户当前位置的解决方案
微信小程序中获取用户当前位置的解决方案 1 概述 微信小程序有时需要获取用户当前位置,以便为用户提供基于位置信息的服务(附近美食、出行方案等)。 获取用户当前位置的前提是用户手机需要打开 GPS 定位开关;其次,微…...

Vue3-35-路由-路由守卫的简单认识
什么是路由守卫 路由守卫,就是在 路由跳转 的过程中, 可以进行一些拦截,做一些逻辑判断, 控制该路由是否可以正常跳转的函数。常用的路由守卫有三个 : beforeEach() : 前置守卫,在路由 跳转前 就会被拦截&…...

制药企业符合CSV验证需要注意什么?
在制药行业中,计算机化系统验证(CSV)是确保生产过程的合规性和数据完整性的关键要素。通过CSV验证,制药企业可以保证其计算机化系统的可靠性和合规性,从而确保产品质量和患者安全。然而,符合CSV验证并不是一…...

再谈动态SQL
专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…...
【数据结构】树
一.二叉树的基本概念和性质: 1.二叉树的递归定义: 二叉树或为空树,或是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成 2.二叉树的特点: (1)每个结点最多只有两棵子树࿰…...

【Midjourney】AI绘画新手教程(一)登录和创建服务器,生成第一幅画作
一、登录Discord 1、访问Discord官网 使用柯學尚网(亲测非必须,可加快响应速度)访问Discord官方网址:https://discord.com 选择“在您的浏览器中打开Discord” 然后,注册帐号、购买套餐等,在此不做缀述。…...
对比 PyTorch 和 TensorFlow:选择适合你的深度学习框架
目录 引言 深度学习在各行业中的应用 PyTorch 和 TensorFlow 简介 PyTorch:简介与设计理念 发展历史和背景 主要特点和设计理念 TensorFlow:简介与设计理念 发展历史和背景 主要特点和设计理念 PyTorch 和 TensorFlow 的重要性 Pytorch对比Te…...

Oracle笔记-查看表已使用空间最大空间
目前以Oracle18c为例,主要是查这个表USER_SEGMENTS。 在 Oracle 18c 数据库中,USER_SEGMENTS 是一个系统表,用于存储当前用户(当前会话)拥有的所有段的信息。段是 Oracle 中分配存储空间的逻辑单位,用于存…...

大数据HCIE成神之路之特征工程——特征选择
特征选择 1.1 特征选择 - Filter方法1.1.1 实验任务1.1.1.1 实验背景1.1.1.2 实验目标1.1.1.3 实验数据解析1.1.1.4 实验思路 1.1.2 实验操作步骤 1.2 特征选择 - Wrapper方法1.2.1 实验任务1.2.1.1 实验背景1.2.1.2 实验目标1.2.1.3 实验数据解析1.2.1.4 实验思路 1.2.2 实验操…...
python 正则-常见题目
1、邮箱 print(re.findall(r[\w-][\w-]\.[\w-], weidianqq.com))2、身份证号 xxxxxx yyyy MM dd 375 0 十八位 print(re.findall(r(?:18|19|(?:[23]\d))\d{2}, 2010)) # 年print(re.findall(r(?:0[1-9])|10|11|12, 11)) # 月print(re.findall(r(?:[0-2][1-9])|10|20|30|3…...
解析:Eureka的工作原理
Eureka是Netflix开源的一个基于REST的的服务发现注册框架,它遵循了REST协议,提供了一套简单的API来完成服务的注册和发现。Eureka能够帮助分布式系统中的服务提供者自动将自身注册到注册中心,同时也能够让服务消费者从注册中心发现服务提供者…...
RecyclerView 与 ListView 区别和使用
前置知识:ListView基本用法与性能提升 RecyclerView 与 ListView 区别 RecyclerView 需要设置布局(LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager) recyclerView?.layoutManager LinearLayoutManager(activity) …...
力扣232. 用栈实现队列
题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开…...

这个方法可以让你把图片无损放大
随着数字技术的不断发展,照片无损放大已经成为了摄影领域中的一项重要技术。照片无损放大能够让摄影师在不损失细节和画质的情况下,将照片放大到更大的尺寸,从而让观众能够更加清晰地欣赏到照片中的每一个细节。 今天推荐的这款软件主要是通…...

Springboot整合Elastic-job
一 概述 Elastic-Job 最开始只有一个 elastic-job-core 的项目,定位轻量级、无中心化,最核心的服务就是支持弹性扩容和数据分片!从 2.X 版本以后,主要分为 Elastic-Job-Lite 和 Elastic-Job-Cloud 两个子项目。esjbo官网地址 Ela…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...

STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...