当前位置: 首页 > 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的安装与使…...

Qwen-Image-2512风格迁移实战:将名画风格应用于产品设计

Qwen-Image-2512风格迁移实战&#xff1a;将名画风格应用于产品设计 1. 引言 你有没有想过&#xff0c;把梵高《星空》的笔触用在你的咖啡杯上&#xff0c;或者让莫奈的睡莲色调渲染你的手机壳&#xff1f;听起来像是顶级设计师的专属魔法&#xff0c;但现在&#xff0c;借助…...

Kandinsky-5.0-I2V-Lite-5s社区实践:在CSDN分享你的创意作品与调参心得

Kandinsky-5.0-I2V-Lite-5s社区实践&#xff1a;在CSDN分享你的创意作品与调参心得 1. 为什么要在CSDN分享你的AI创作 最近在星图GPU平台体验了Kandinsky-5.0-I2V-Lite-5s这个强大的图生视频模型&#xff0c;发现它能让静态图片"活"起来&#xff0c;生成各种有趣的…...

像素剧本圣殿步骤详解:如何导出带角色关系图谱的交互式剧本HTML文档

像素剧本圣殿步骤详解&#xff1a;如何导出带角色关系图谱的交互式剧本HTML文档 1. 工具介绍与环境准备 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是基于Qwen2.5-14B-Instruct深度微调的专业剧本创作工具。它不仅具备强大的剧本生成能力&#xff0c;还能将创…...

深度学习项目训练环境作品集:10类常见图像分类任务的统一训练模板与结果汇总

深度学习项目训练环境作品集&#xff1a;10类常见图像分类任务的统一训练模板与结果汇总 1. 环境准备与快速上手 深度学习项目训练往往需要复杂的环境配置&#xff0c;从框架安装到依赖库配置&#xff0c;整个过程耗时且容易出错。本镜像基于深度学习项目改进与实战专栏&…...

家庭教育小帮手:OpenClaw+Kimi-VL-A3B-Thinking自动批改孩子手写作业

家庭教育小帮手&#xff1a;OpenClawKimi-VL-A3B-Thinking自动批改孩子手写作业 1. 为什么需要自动化作业批改&#xff1f; 作为一名经常辅导孩子作业的家长&#xff0c;我深刻体会到手工批改作业的痛点。每天晚上检查数学题时&#xff0c;既要核对答案正确性&#xff0c;又要…...

macOS下OpenClaw排错大全:Qwen3.5-9B接口连接问题解决

macOS下OpenClaw排错大全&#xff1a;Qwen3.5-9B接口连接问题解决 1. 问题背景与排查思路 上周我在macOS上部署OpenClaw时&#xff0c;遇到了Qwen3.5-9B接口连接失败的问题。作为一个长期依赖本地AI助手的开发者&#xff0c;这类问题直接影响我的自动化工作流。经过三天断断续…...

学习javaday2

数据类型转换不能对布尔值进行转换不能把对象类型转换为不相干的类型在把高容量转换到低容量时&#xff0c;强制类型转换转换的时候肯存在内存溢出&#xff0c;或者精度问题public class Demo06 {public static void main(String[] args){//操作比较大的数的时候&#xff0c;注…...

MTS-Utils:面向Arduino的MTS模组专用AT指令工具库

1. 项目概述MTS-Utils 是 Multi-Tech Systems&#xff08;多技系统公司&#xff09;为其 MTS Socket Modem Arduino Shield 系列通信模组配套开发的底层工具库。该库并非通用型通信协议栈&#xff0c;而是专为适配其硬件平台特性而设计的轻量级 C/C 工具集&#xff0c;运行于 A…...

基于深度学习的隧道缺陷检测系统(YOLO12/11/v8/v5模型+django)(源码+lw+部署文档+讲解等)

摘要随着城市化进程的加快&#xff0c;隧道的建设和维护日益重要。隧道缺陷的及时检测与修复不仅关系到交通安全&#xff0c;也涉及到基础设施的耐久性和经济效益。传统的隧道缺陷检测方法依赖人工巡检&#xff0c;效率低且容易遗漏细微缺陷。本文提出了一种基于深度学习的隧道…...

物联网设备搜索终极指南:Shodan与Censys实战应用

物联网设备搜索终极指南&#xff1a;Shodan与Censys实战应用 在当今万物互联的时代&#xff0c;物联网设备搜索已经成为网络安全领域的关键技能。通过Shodan和Censys这两大专业工具&#xff0c;你可以轻松发现连接到互联网的各种设备&#xff0c;从智能摄像头到工业控制系统&a…...