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

极简面试题 --- Redis

什么是 Redis?

Redis 是一个基于内存的键值存储系统,也被称为数据结构服务器。它支持多种数据结构,例如字符串、哈希表、列表、集合和有序集合,并且可以在内存中快速读写。

Redis 的优势有哪些?

  • 快速:由于 Redis 是基于内存的,所以可以快速读写数据。
  • 可扩展性:Redis 支持主从复制和分片功能,可以轻松地扩展数据存储能力。
  • 多种数据结构:Redis 支持多种数据结构,使其可以适用于各种应用程序场景。
  • 持久化:Redis 支持持久化选项,可以将数据保存在磁盘上,以防止数据丢失。
  • 开源免费:Redis 是开源的,可以免费使用。

Redis 的常用数据结构有哪些?

Redis 支持以下数据结构:

  • 字符串
  • 哈希表
  • 列表
  • 集合
  • 有序集合

Redis 是否支持事务?

是的,Redis 支持事务。Redis 事务类似于数据库事务,可以将多个命令作为一个原子操作进行执行。

Redis 支持哪些数据淘汰策略?

  • noeviction(默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)。
  • allkeys-lru:从所有 key 中使用 LRU 算法进行淘汰(LRU 算法:即最近最少使用算法)。
  • volatile-lru:从设置了过期时间的 key 中使用 LRU 算法进行淘汰。
  • allkeys-random:从所有 key 中随机淘汰数据。
  • volatile-random:从设置了过期时间的 key 中随机淘汰。
  • volatile-ttl:在设置了过期时间的 key 中,淘汰过期时间剩余最短的。当使用
  • volatile-lru、volatile-random、volatile-ttl 这三种策略时,如果没有 key 可以被淘汰,则和 noeviction 一样返回错误。

Redis 如何实现主从复制?

Redis 主从复制是通过在从服务器上启动一个 Redis 进程来实现的,该进程会连接到主服务器并接收主服务器发送的数据更新命令。从服务器也会周期性地向主服务器发送心跳包以保持连接。

Redis 如何实现分布式?

Redis 可以通过以下方式实现分布式:

  • 哈希槽分片:将数据分散到多个节点中,每个节点负责处理一部分数据。
  • 主从复制:每个节点都可以有一个或多个从节点,以提高可用性和可扩展性。
  • Redis Cluster:Redis 3.0 及以上版本支持 Redis Cluster 功能,可以轻松地实现分布式部署。

Redis 的持久化有哪几种方式?

Redis 支持两种持久化方式:

  • RDB 持久化:将 Redis 数据集快照保存到磁盘上。
  • AOF 持久化:将 Redis 的写操作追加到日志文件中,以便在服务器重启时重新构建数据集。

Redis 的主从架构有什么优缺点?

优点:

  • 高可用性:如果主节点失效,从节点可以继续服务。
  • 可扩展性:可以增加从节点来扩展读取能力。
  • 读写分离:主节点负责写操作,从节点负责读操作,可以提高性能。

缺点:

  • 单点故障:如果所有的从节点都失效,那么整个系统就不可用了。
  • 数据延迟:从节点不能立即接收到主节点发送的更新命令,可能会导致数据延迟。

如何设置 Redis 的密码?

可以通过以下方式设置 Redis 的密码:
- 在配置文件中添加 `requirepass` 选项并设置密码。
- 使用 `CONFIG SET` 命令设置密码。

Redis 是否支持集群?

是的,Redis 支持集群部署。Redis Cluster 可以将数据分片到多个节点中,并且可以自动重新分片以适应动态环境。

Redis 的过期键如何删除?

Redis 使用定期和惰性删除两种方法来删除过期键。定期删除会在指定时间间隔内扫描所有键并删除过期键,而惰性删除则是在访问键时检查它是否过期,并在需要时删除过期键。

Redis 如何实现发布/订阅功能?

Redis 的发布/订阅功能使用两个命令 `PUBLISH` 和 `SUBSCRIBE` 来实现。一个客户端可以通过 `SUBSCRIBE` 命令订阅一个或多个频道,另一个客户端可以通过 `PUBLISH` 命令向一个或多个频道发布消息。

Redis 的事务是怎样执行的?

Redis 的事务是通过 `MULTI`、`EXEC` 和 `DISCARD` 命令实现的。在事务中,客户端可以将多个命令缓存起来,然后通过 `EXEC` 命令原子地执行这些命令。

Redis 如何保证数据一致性?

Redis 使用主从复制和 Sentinel 机制来保证数据一致性。在主从复制中,主节点可以将更新命令发送给所有从节点,从而确保数据的一致性。在 Sentinel 中,Sentinel 进程会监视主节点和从节点,并在主节点失效时自动切换到一个可用的从节点。

Redis 的 Lua 脚本是如何执行的?

Redis 使用 Lua 解释器来执行 Lua 脚本。客户端可以使用 `EVAL` 命令将 Lua 脚本发送到 Redis 服务器,服务器会将其编译并执行。

Redis 的事务是否支持回滚?

Redis 的事务不支持回滚。如果在事务执行期间发生错误,那么这些错误不会导致 Redis 回滚已经执行的命令。

Redis 是否支持多个数据库?

是的,Redis 支持多个数据库,默认情况下有16个编号为0-15的数据库。

Redis 的性能瓶颈是什么?

Redis 的性能瓶颈通常在以下方面:
- 网络带宽限制
- 内存瓶颈
- CPU 瓶颈
- I/O 瓶颈

Redis 如何处理缓存穿透问题?

Redis 可以通过以下方式处理缓存穿透问题:
- 使用布隆过滤器:布隆过滤器可以快速确定一个元素是否在集合中,从而减少对后端存储系统的不必要查询。
- 使用缓存空对象:如果查询数据库返回 null 或空结果,可以将这些结果写入缓存中以防止未来的查询。

相关文章:

极简面试题 --- Redis

什么是 Redis? Redis 是一个基于内存的键值存储系统,也被称为数据结构服务器。它支持多种数据结构,例如字符串、哈希表、列表、集合和有序集合,并且可以在内存中快速读写。 Redis 的优势有哪些? 快速:由…...

可视化图表API格式要求有哪些?Sugar BI详细代码示例(4)

Sugar BI中的每个图表可以对应一个数据 API,用户浏览报表时,选定一定的过滤条件,点击「查询」按钮将会通过 API 拉取相应的数据;前面说过,为了确保用户数据的安全性,Sugar BI上的所有数据请求都在Sugar BI的…...

学习vue(可与知乎合并)

一:组件及交互 1、什么是组件? 组件是可复用的 Vue 实例,且带有一个名字:在这个例子中是 。我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用: 声明组件 // 定义一个名…...

【UEFI实战】Linux下如何解析ACPI表

本文介绍如何在Linux下查看ACPI表示。使用的系统是Ubuntu18.04: Linux home 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 可以在如下的目录看到ACPI的基本信息: 但是默认的表都是不可以直接查看的&…...

Java-Redis持久化之RDB操作

Java-Redis持久化之RDB操作 1.为什么redis需要持久化?2.什么是RDB操作?3.请你用自己的话讲下RDB的过程?4.如何恢复rdb文件? 1.为什么redis需要持久化? Redis是内存数据库,如果不将内存数据库保存到磁盘,那么服务器进程退出&am…...

信号signal编程测试

信号会打断系统调用,慎用,就是用的时候测一测。 下面是信号的基础测试 信号 信号(signal)机制是UNIX系统中最为古老的进程之间的通信机制。它用于在一个或多个进程之间传递异步信号。信号可以由各种异步事件产生,例如…...

Linux学习记录——이십삼 进程信号(2)

文章目录 1、可重入函数2、volatile关键字3、如何理解编译器的优化4、SIGCHLD信号 1、可重入函数 两个执行流都执行一个函数时,这个函数就被重入了。比如同一个函数insert,在main中执行时,这个进程时间片到了,嵌入了内核&#xf…...

Revit中如何创建曲面嵌板及一键成板

一、Revit中如何创建曲面嵌板 在我们的绘图过程中可能会遇见一些曲面形状,而我们的常规嵌板没办法满足我们绘制的要求,我们今天学习如何在revit中绘制曲面嵌板。 1.新建“自适应公制常规模型”族,创建4个点图元并为其使用自适应。 2.在相同的…...

STM32F4_DHT11数字温湿度传感器

目录 前言 1. DHT11简介 2. DHT11数据结构 3. DHT11的传输时序 3.1 DHT11开始发送数据流程 3.2 主机复位信号和DHT11响应信号 3.3 数字 “0” 信号表示方法 3.4 数字 “1” 信号表示方法 4. 硬件分析 5. 实验程序详解 5.1 main.c 5.2 DHT11.c 5.3 DHT11.h 前言 DH…...

WiFi(Wireless Fidelity)基础(十一)

目录 一、基本介绍(Introduction) 二、进化发展(Evolution) 三、PHY帧((PHY Frame ) 四、MAC帧(MAC Frame ) 五、协议(Protocol) 六、安全&#x…...

操作系统—— 精髓与设计原理--期末复习

一、计算机系统概述 1、基本构成 计算机有四个主要的结构化部件: ①处理器(Processor):控制计算机的操作,执行数据处理功能。当只有一个处理器时,它通常指中央处理器(CPU) ②内存…...

每天一道算法练习题--Day21 第一章 --算法专题 --- ----------位运算

我这里总结了几道位运算的题目分享给大家,分别是 136 和 137, 260 和 645, 总共加起来四道题。 四道题全部都是位运算的套路,如果你想练习位运算的话,不要错过哦~~ 前菜 开始之前我们先了解下…...

D1. LuoTianyi and the Floating Islands (Easy Version)(树形dp)

Problem - D1 - Codeforces 这是问题的简化版本。唯一的区别在于在该版本中k≤min(n,3)。只有在两个版本的问题都解决后,才能进行黑客攻击。 琴音和漂浮的岛屿。 洛天依现在生活在一个有n个漂浮岛屿的世界里。这些漂浮岛屿由n−1个无向航线连接,任意两个…...

rk3588移植ubuntu server

ubuntu server 18.04 arm版本. 1、使用qemu运行 安装qemu-system-aarch64 sudo apt install -y qemu-system-arm 2、下载ubuntu server Index of /releases/18.04.3 3、创建虚拟磁盘 qemu-img create ubuntuimg.img 40G 4、创建虚拟机 弹出界面,直接回车选…...

如何更好地刷力扣

之前刷力扣是一口气看很多题目,打算时不时看一会题解,逐渐熟悉套路,争取背过,最后就可以写出来了。我个人是背知识比较喜欢这种方法,但后来发现根本不适用 算法题本身就比较复杂,不经过实际写代码中的思考…...

上采样和下采样

首先,谈谈不平衡数据集。不平衡数据集指的是训练数据中不同类别的样本数量差别较大的情况。在这种情况下,模型容易出现偏差,导致模型对数量较少的类别预测效果不佳。 为了解决这个问题,可以使用上采样和下采样等方法来调整数据集…...

小猪,信息论与我们的生活

前言 动态规划是大家都熟悉与陌生的知识,非常灵活多变,我自己也不敢说自己掌握了,今天给大家介绍一道题,不仅局限于动态规划做题,还会上升到信息论,乃至于启发自己认知世界的角度 因为比较难,本…...

【鸿蒙应用ArkTS开发系列】- http网络库使用讲解和封装

目录 前言http网络库组件介绍http网络库封装创建Har Module创建RequestOption 配置类创建HttpCore核心类创建HttpManager核心类对外组件导出添加网络权限 http网络库依赖和使用依赖http网络库(httpLibrary)使用http网络库(httpLibrary&#x…...

【Java零基础入门篇】第 ⑥ 期 - 异常处理

博主:命运之光 专栏:Java零基础入门 学习目标 掌握异常的概念,Java中的常见异常类; 掌握Java中如何捕获和处理异常; 掌握自定义异常类及其使用; 目录 异常概述 异常体系 常见的异常 Java的异常处理机制…...

计算职工工资

目录 问题描述 程序设计 问题描述 【问题描述】 给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。 【输入形式】 输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...