极简面试题 --- 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中执行时,这个进程时间片到了,嵌入了内核…...
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行,每行给出一位职员的信息,…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...
shell脚本质数判断
shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数)shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数) 思路: 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...
【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...
PCA笔记
✅ 问题本质:为什么让矩阵 TT 的行列式为 1? 这个问题通常出现在我们对数据做**线性变换(旋转/缩放)**的时候,比如在 PCA 中把数据从原始坐标系变换到主成分方向时。 📌 回顾一下背景 在 PCA 中ÿ…...
React与原生事件:核心差异与性能对比解析
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
