Redis面试相关

数据过期策略

惰性删除
当用到那个key的时候再检查是否过期,过期则删除,有效则返回key
优点是可以节省检查过期的时间 缺点是会浪费内存

定期删除
每隔一段时间对一些key进行检查并且删除里面的过期key
有两种模式
slow模式是定时任务,频率是10HZ,执行时间不超过25ms,可以通过配置文件调整频率
fast模式执行频率不固定,每次间隔不低于2ms,执行时间不超过1ms

Redis是惰性删除加定期删除都使用

8种内存淘汰策略

集群模式:
主从复制
哨兵模式
分片集群

主从复制中数据同步的流程
全量同步:主节点通过replicationid判断是不是第一次同步,如果是第一次同步需要进行一次bgsave生成rdb文件进行同步,然后把生成的rdb文件传输给从节点,rdb期间执行的命令会记录在日志文件中。
增量同步(slave重启或者后期数据变化):如果不是第一次同步就读从库传给主库的offset后的命令。

redis是单线程的为什么还那么快
redis是纯内存操作,执行速度非常快
采用单线程避免不必要的上下文切换,多线程还要考虑线程安全问题
采用I/O多路复用模型,非阻塞IO

解释一下I/O多路复用模型
redis是纯内存操作性能瓶颈是网络延迟而不是执行速度,I/O多路复用模型就实现了高效的网络请求

redis作为缓存数据的持久化是怎么做的呢
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/96677.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识输出零散没有体系怎么办

当面临知识输出零散、不成体系的困境时,其根本原因在于未能建立一个从输入、整合到输出的闭环系统。要解决这一问题,核心在于构建个人知识管理体系、掌握结构化思维与表达能力、运用合适的工具与方法进行固化、持续实践并迭代优化。这意味着,…

【C语言选择排序算法详解】+ 算法性能优化 + 动态演示实现

文章目录一、算法介绍二、算法特点三、代码实现与解析四、代码解析1. 打印数组函数2. 选择排序核心逻辑3. 动态展示实现4. 主函数五、算法优化思路与实现优化1:减少交换次数优化原理:优化2:双向选择排序优化原理:优化3&#xff1a…

栈(Java)

提示:多练才是王道,加油٩(๑❛ᴗ❛๑)۶ 栈Java1. 栈2. Java中栈的其中两种实现方式2.1 Stack类2.1.1 Stack的模拟实现2.2 LinkedList类3. 典型习题讲解3.1 逆波兰表达式求值3.2 匹配括号3.3 合理弹出序列3.4 最小栈1. 栈 栈是一种特殊的线性表,其只允许在固定的一…

LayaAir鼠标(手指)控制相机旋转,限制角度

切换天空盒脚本挂载到相机身上 const { regClass, property } Laya;regClass() export class SmoothCameraController extends Laya.Script {declare owner: Laya.Camera;// 旋转灵敏度property({ type: Number, name: "旋转灵敏度" })public rotationSensitivity:…

【数据结构入门】排序算法(4)归并排序

目录 1.排序的原理 1.1 保证子数组有序 1.2 时间复杂度 2. 递归实现 2.1 思路 2.2 代码 3. 非递归实现 3.1 思路 3.2 代码 4.面试题 4.1 题目 4.2 思路 1.排序的原理 归并排序是外排序,所谓外排序就是说能够对文件中的数据进行排序。 ①首先&#xff…

FLEXSPI_Init 硬件故障问题

使用官方例程发现FLEXSPI_Init会引起硬件故障,查阅相关帖子发现主要有两个可能:1、外部闪存配置差异修改 LUT(查找表)命令:示例中擦除扇区命令为 0xD7,写状态寄存器命令为 0x01,需分别改为 闪存…

如何用 Rust 重写 SQLite 数据库(一):项目探索

要使用 Rust 重写 SQLite 数据库,我们需要实现一个简化的关系型数据库核心功能(如 SQL 解析、存储引擎、事务管理)。以下是一个分步实践指南,包含关键代码示例。一、项目规划 我们将实现一个超简化数据库 MiniSQL,支持…

JVM之堆(Heap)

一、堆的核心特性 唯一性与共享性 每个JVM实例仅有一个堆,所有线程共享,但可通过线程私有缓冲区(TLAB)减少多线程分配冲突。内存结构演变 JDK 7及之前:堆分为新生代(Young)、老年代(…

单片机的RAM与ROM概念

RAM与ROM1、RAM与ROM2、 bss、data、heap、stack、text详细讲解3、详细探讨 TCM、OCRAM 和 HBNRAM 之间的区别及其具体作用。3.1、TCM(Tightly Coupled Memory)3.2、 OCRAM(On Chip RAM)3.3、HBNRAM (Hibernate RAM)3.4、总结1、R…

实验3:事件处理(2学时)

实验目的(1)熟练掌握 v-on 指令的用法,学会使用 v-on 指令监听 DOM 元素的事件,并通过该事件触发调用事件处理程序。(2)掌握v-on 指令修饰符的基本用法。实验内容实现购物车功能的拓展(商品数量…

商品库存扣减方案

文章目录1. Lua脚本 Redis(业界首选,综合最优)2. Redis原子命令(DECRBY 结果校验)3. Redis事务(MULTI/EXEC)4. 分布式锁(基于Redis实现)5. Redisson客户端封装&#xf…

关于在阿里云DMS误操作后如何恢复数据的记录

前言 昨天因客户员工操作错误,导致快递单号和订单互换。客户员工那边让笔记修改数据。 于是笔者写下如下SQL来操作,导致了灾难性事故。 update t_order_fed_ex_record set tracking_number 884102170661, master_tracking_number 884102170661, push…

【操作系统核心知识梳理】线程(Thread)重点与易错点全面总结

在多任务操作系统中,线程是比进程更轻量的执行单元,理解线程的特性和实现方式是掌握并发编程的基础。本文系统梳理了线程相关的核心知识点和常见误区,助你夯实操作系统基础。一、线程的基本概念与引入目的 1.1 什么是线程? 线程是…

深入理解 Python 中的 `__call__` 方法

化身为可调用的对象:深入理解 Python 中的 __call__ 方法 引言:函数与对象的边界模糊化 在 Python 中,我们最熟悉的概念莫过于函数(Function) 和对象(Object)。函数是可调用的(calla…

云服务器使用代理稳定与github通信方法

使用SSH反向隧道 (SSH Reverse Tunneling) 利用SSH连接在您的本地电脑和云服务器之间建立一个反向的加密通道。 原理: 从本地电脑发起一个SSH命令到您的云服务器,这个命令会告诉云服务器:“请监听您自己的某个端口(例如&#xff1…

7.k8s四层代理service

Service的基本介绍 Cluster IP:每个 Service 都分配了一个Cluster IP,它是一个虚拟的内部IP地址,用于在集群内部进行访问。这个虚拟IP是由Kubernetes自动分配的,并且与Service对象一一对应。 端口映射:Service可以映射…

Qt 工程中 UI 文件在 Makefile 中的处理

Qt 工程中 UI 文件在 Makefile 中的处理 在 Qt 工程中,.ui 文件(Qt Designer 界面文件)需要通过 uic(用户界面编译器)工具转换为对应的头文件。以下是几种情况下如何处理 UI 文件:1. 使用 qmake 自动生成 M…

ZLMediaKit性能测试

一、环境 系统:虚拟机 Ubuntu22.04 64bit配置: 4核8G设置:ulimit -n 102400 二、安装 依赖安装sudo apt update sudo apt install ffmpeg sudo apt install nloadzlm服务安装参考:https://blog.csdn.net/hanbo622/article/details/149064939?…

智能文档处理业务,应该选择大模型还是OCR专用小模型?

智能文档处理业务中,最佳策略不是二选一,而是“大小模型协同”。用专用小模型处理高频、标准化的核心文档流,实现极致效率与成本控制;用大模型赋能非标、长尾文档的灵活处理,加速业务创新。 OCR小模型会被大模型取代吗…

android 如何判定底部导航栏显示时 不是键盘显示

在 Android 中判定底部导航栏是否显示时,核心痛点是 区分 “导航栏的底部 Insets” 和 “软键盘弹出的底部 Insets”—— 两者都会导致 getSystemWindowInsetBottom() 返回非零值,直接判断会误将键盘弹出当成导航栏显示。以下是基于 WindowInsets 类型区…