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

【面试宝典】redis常见面试题总结(上)

一、为什么使用 redis?

使用缓存的目的就是提升读写性能。为了提高读写性能,带来更高的并发量。减少对 MySQL 的请求量。

二、redis 有哪些好处?

  • 读写速度快,因为数据存储在内存中,所以数据获取快。
  • 支持多种数据结构。包括字符串、列表、集合、有序列表、哈希等。
  • 支持事务,且操作遵守原子性,即对数据的操作要麽都执行、要麽都不执行。
  • 还支持队列、主从复制、集群、数据持久化等功能。

三、redis 和 memcache 区别

  • redis 和 memcache 都是将数据存储到内存中,都是内存数据库。
  • memcache 仅支持 key-value 结构的数据类型。redis 支持多种数据类型:string、hash、set、zset、list 等等。
  • redis 当物理内存用完时,可以将一些很久没用的 value 交换到磁盘。
  • memcache 可以利用 magent 做出一主多从;redis 也可以做一主多从。
  • memcache 挂掉之后数据就没有了;redis 可以定期保存数据到磁盘。
  • memcache 单个 value 最大 1M; redis 的单个最大时 512M.
  • memcache 挂掉之后数据不能恢复;redis 数据丢失后可以通过 aof 或者 rdb 恢复。
  • memcache 网络 IO 模型是多线程,非阻塞 IO 复用的网络模型,原型上接进 nginx。redis 使用单线程的 IO 复用模型。

四、为什么单线程效率还那么高?

  • c 语言编写,效率高
  • 存内存操作
  • 基于非阻塞IO复用模型机制
  • 单线程避免了多线程上下文切换问题
  • 丰富的数据结构

五、redis 的同步机制了解是什么?

redis 支持主从同步、从从同步。如果是第一次进行主从同步,主节点需要使用 bgsave 命令,再将后续修改操作记录到内存的缓冲区,等 RDB 文件全部同步到复制节点,复制节点接受完成后将 RDB 镜像加载到内存中。等加载完成后,复制节点通知主节点将复制期间修改的操作记录同步到复制节点,即可完成同步过程。

六、对 redis 事务的理解

1、什么是 redis 事务?原理是什么?

redis 中的事务是一组命令的集合,是 redis 的最小执行单位。它可以保证一次执行多个命令,每个事务是一个单独隔离的操作。事务中的所有命令都会序列化、按顺序执行。服务端再执行事务的过程中,不会被其他客户端发来的命令请求打断。

2、redis 事务的注意点?

  • redis 事务不支持回滚,不像 MySQL 的事务一样,要么都执行要么都不执行。
  • redis 服务端在执行事务的过程中,不会被其他客户端发来的命令请求打断,直到事务命令全部执行完毕才会执行其他客户端的命令。

七、redis 如果存储了 bigkey 会存在什么影响?

  • 网络阻塞:获取 bigkey,传输的数据量大,会增加带宽的压力。
  • 超时阻塞:因为 bigkey 占用的空间大,所以操作起来效率低,导致出现阻塞的可能性增大。
  • 导致内存空间不平衡:一个 bigkey 存储量比较大,同一个 key 在同一个节点或服务器中存储,会造成一定影响。

八、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题

1、缓存雪崩

缓存雪崩是在同一时间大量的 key 过期,导致所有的请求直接访问数据库。对数据库的 CPU 和内存造成了巨大压力,严重的会造成数据库宕机。

解决方案:最简单的处理方案是将缓存失效时间分开。

2、缓存穿透

缓存穿透是指用户请求数据,在数据库中没有,自然缓存中也没有,就会导致会直接查询数据库,数据库中也没有就会返回null.

解决方案:采用布隆过滤器。

3、缓存预热

缓存预热是将一些需要缓存的数据通过接口或者页面实现存储缓存中。

相关文章:

【面试宝典】redis常见面试题总结(上)

一、为什么使用 redis? 使用缓存的目的就是提升读写性能。为了提高读写性能,带来更高的并发量。减少对 MySQL 的请求量。 二、redis 有哪些好处? 读写速度快,因为数据存储在内存中,所以数据获取快。支持多种数据结构…...

数据仓库: 3- ETL过程

目录 3- ETL过程3.1 数据抽取(Extract)3.1.1 数据抽取的挑战3.1.2 数据抽取的方式3.1.2.1 全量抽取3.1.2.2 增量抽取3.1.2.3 实时抽取 3.1.3 数据抽取的技术3.1.4 数据抽取工具3.1.5 总结 3.2 数据转换(Transform)3.2.1 定义3.2.2…...

js数组变字符串

let array [1,2,3]; let string array.join(,); // 使用空格作为分隔符 console.log(string); // 输出: "1,2,3"...

日常问题笔记1

th:insert&#xff1a;将被引用的模板片段插⼊到自己的标签体中 th:replace&#xff1a;将被引用的模板片段替换掉自己 th:include&#xff1a;类似于 th:insert&#xff0c;⽽不是插⼊⽚段&#xff0c;它只插⼊此⽚段的内容 <!--1、比如抽取的公用代码片段如下--> <…...

位图与布隆过滤器 —— 海量数据处理

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 &#x1f680; 位图 一&#xff1a; &#x1f525; 位图概念 二&#xff1a; &#x1f525; 位图的实现思路及代码实现三&#xff1a; &#x1f525; 位图的应用四&#xff1a;…...

二:《Python基础语法汇总》— 条件判断与循环结构

一&#xff1a;条件判断 1.程序执行的三大流程&#xff1a; ​ 顺序流程&#xff1a;无缩进代码&#xff0c;从上往下依次执行 ​ 分支流程&#xff1a;选择性执行某块代码&#xff0c;或跳过某行代码去执行&#xff0c;与缩进&#xff08;TAB&#xff09;有关 ​ 循环流程&…...

【威锋网-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…...

01_React简介、基础入门

React 简介、基础入门 一、React 简介1、是什么&#xff1f;2、谁开发的&#xff1f;3、为什么要学&#xff1f;4、React 的特点5、学习 React 之前你要掌握的 Javascript 基础知识 二、React 入门1、相关 js 库2、Hello React 入门小例子---React16.8.0 版本3、为什么不用 js …...

【Java 内存区域】

Java内存区域 JDK1.7 VS JDK1.8堆 (Heap)方法区 (Method Area)String 常量池 (String Pool)运行时常量池 (Runtime Constant Pool)虚拟机栈 (JVM Stack)局部变量表操作数栈动态链接方法返回信息 本地方法栈 (Native Method Stack)程序计数器 (Program Counter Register)元空间 …...

你是如何克服编程学习中的挫折感的?

一&#xff1a;学习之路 在编程学习的过程中&#xff0c;挫折和挑战是不可避免的。面对这些困难&#xff0c;我个人的一些经验和方法如下&#xff0c;或许能为你提供一些启示&#xff1a; 1. 学会分解问题 当遇到复杂的算法或者Bug时&#xff0c;我会将问题分解成更小的部分。…...

【AI应用实战】灵办AI插件集成详细指南

一、写在前面 随着AI技术的日新月异&#xff0c;大型模型应用如雨后春笋般涌现&#xff0c;从ChatGPT到文心一言&#xff0c;再到讯飞星火&#xff0c;无一不彰显着智能科技的无限潜力。而在这股浪潮中&#xff0c;我们欣喜地发现&#xff0c;一些创新的浏览器插件正悄然兴起&a…...

MySQL数据库连接超时问题排查报告

1、问题描述 边端设备访问云端过程中有概率出现MySQL数据库连接超时报错&#xff0c;具体报错代码如下&#xff1a; [2024-08-13 13:47:44,036] ERROR in app: Exception on /est-tasks/start [POST] Traceback (most recent call last): File "/usr/local/lib/python3.1…...

代码随想录第三天 | 链表

文章目录 链表理论知识定义链表删除链表 Leetcode203 移除链表元素代码实现 Leetcode707 设计链表代码实现复杂度分析错误点 Leetcode206 反转链表新建链表双指针法 链表理论知识 链接: https://programmercarl.com/%E9%93%BE%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.h…...

Python编码系列—Python数据可视化:Matplotlib与Seaborn的实战应用

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…...

putty中修改默认窗口大小和字体、字号

在WinSCP中调用putty&#xff0c;发现默认窗口太小&#xff0c;字号也很小&#xff0c;非常不友好。现在显示器都是1080p起步&#xff0c;所以很有必要修改之。 以中文版v0.70为例&#xff0c;方法&#xff1a; 1. 点击左上角图标 &#xff0c;选择下拉菜单中的“修改设置”&…...

Windows下网络编与ESP8266-WiFi通信(win32-API)

一、前言 络编程是指编写程序使不同计算机之间能够通过网络进行通信和数据交换。网络编程涉及使用网络协议和编程接口来建立、管理和终止网络上的数据通信。在这一领域中&#xff0c;TCP/IP协议族是核心组成部分&#xff0c;尤其TCP&#xff08;传输控制协议&#xff09;是面向…...

【Golang】golang安装一些依赖包时总是失败

Golang安装一些依赖包失败&#xff1a; 比如安装gin包&#xff1a;go get -u github.com/gin-gonic/gin 可能会报错&#xff1a;连接网络失败、超时等 这时可能需要修改go的环境配置&#xff0c;修改代理即可&#xff1a; go env -w GO111MO…...

ubuntu如何监控Xvfb虚拟显示器

在Ubuntu中监控Xvfb显示器主要涉及到使用VNC服务器来远程访问这个环境。以下是一些基本步骤&#xff1a; 安装Xvfb和相关工具: 使用apt安装Xvfb和x11vnc&#xff0c;x11vnc是一个VNC服务器&#xff0c;可以远程访问Xvfb创建的虚拟桌面环境。 sudo apt-get install xvfb sudo ap…...

小型需求管理软件盘点:8款功能强大的工具

本文介绍了以下8款工具&#xff1a;PingCode、Worktile、易得云、Ping、燃草、Gitee、Monday.com、Slack。 在现代企业管理中&#xff0c;需求管理一直是个让人头疼的问题&#xff0c;特别是对于小型企业来说&#xff0c;选择一款合适的需求管理软件往往比想象中更复杂。如果选…...

Labelme的安装与使用教程

文章目录 一、Labelme是什么&#xff1f;二、安装步骤1.新建虚拟环境2.安装Labelme3.Labelme的使用 三、json2yolo 一、Labelme是什么&#xff1f; Labelme是一个用于图像标注的开源工具&#xff0c;可以实现图像标注、语义分割、实例分割等。 本文记录一下labelme的安装与使…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...