Redis面试常见问题

Redis中的Lua脚本到底能不能保证原子性?

Redis中Lua脚本的执行,可以保证并发编程中不可再拆分的这个原子性,但是没有保证数据库ACID中要么都执行要么都回滚的这个原子性。Lua脚本执行过程中命令产生错误,是不会回滚的,后续命令不会执行。

在数据库中的原子性,确实是一个不可拆分的工作单元,要么都执行,要么都不执行。因为事务可以Commit、也可以Rollback。

在并发编程中,我们把一个或者多个操作在 CPU 执行的过程中不被中断的特性称为原子性。

redis为什么快?

  1. 操作基于内存

  2. IO多路复用

  3. 单线程操作:省去多线程时CPU上下文会切换的时间

    Redis 单线程指的是网络请求模块使用了一个线程,即一个线程处理所有网络请求,其他模块该使用多线程,仍会使用了多个线程。

  4. 数据结构。

redis为什么设计16384槽

Normal heartbeat packets carry the full configuration of a node, that can be replaced in an idempotent way with the old in order to update an old config. This means they contain the slots configuration for a node, in raw form, that uses 2k of space with16k slots, but would use a prohibitive 8k of space using 65k slots.At the same time it is unlikely that Redis Cluster would scale to more than 1000 mater nodes because of other design tradeoffs.So 16k was in the right range to ensure enough slots per master with a max of 1000 maters, but a small enough number to propagate the slot configuration as a raw bitmap easily. Note that in small clusters the bitmap would be hard to compress because when N is small the bitmap would have slots/N bits set that is a large percentage of bits set.
  1. 如果槽位为65536,发送心跳信息的消息头达8k(65536÷8÷1024=8kb),发送的心跳包过于庞大。所以槽位(16394÷8÷1024=2kb)比较合适。
  2. redis的集群主节点数量基本不可能超过1000个。
  3. 槽位越小,节点少的情况下,压缩率高

热key问题

概念:在Redis中,热key问题指的是某个key被频繁访问,导致该key所在的数据结构增长过大,进而导致Redis性能下降甚至宕机。

对于热key的处理,主要在于事前预测和事中解决。

在事中解决方面,主要可以考虑,热点key拆分、多级缓存、热key备份、限流等方案来解决。

LRU、LFU

LRU指的是最近最少使用(Least Recently Used),是一种缓存淘汰策略。在实现缓存时,为了让缓存的命中率更高,我们需要选择合适的缓存淘汰策略。LRU的具体做法是将最近最少使用的缓存块置换出去,即将最久未被访问的缓存块淘汰掉。

LFU是Least Frequently Used的缩写,意为最不经常使用。LFU算法是一种用于缓存管理的算法,它根据数据项在最近一段时间内被访问的频率来确定哪些数据应该从缓存中删除以腾出空间。当缓存达到容量限制时,LFU算法会优先删除被访问次数最少的数据项。与其他缓存替换算法相比,LFU算法可以更加高效地利用缓存空间。

Redis怎么保证数据不丢失

  1. 持久化:redis支持AOF和RDB、混合的持久化方式,可以保证数据不丢失。
  2. 集群:有主从模式,哨兵模式和cluster集群模式集群来保证应用的可靠性,保证数据不丢失。

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

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

相关文章

基于Java SSM框架+Vue实现垃圾分类网站系统项目【项目源码+论文说明】

基于java的SSM框架Vue实现垃圾分类网站系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个垃圾分类网站 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述…

java8 lambda常用整理(2)

list集合数据分组 使用Collectors.groupingBy()方法来实现List集合数据的分组。groupingBy()方法接受一个分类函数,该函数将根据指定的条件将元素分组。 1.1. 示例1 import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.st…

2023年国内主流的低代码平台

低代码开发平台(Low-Code Development Platform, LCDS)为企业和开发者提供了高效的应用开发方式。这些平台使得开发者可以通过简化的设计界面快速创建和部署应用,大大提高了开发效率并降低了开发成本。 伴随数字化转型推进,选购低…

C++中用于动态内存的new和delete操作符

文章目录 1、动态分配内存的应用2、动态分配内存与分配给普通变量的内存有什么不同?3、C 中如何分配/释放内存4、new 操作符4.1 使用new的语法4.2 初始化内存4.3 分配内存块4.4 普通数组声明 Vs 使用new4.5 如果运行时没有足够内存可用怎么办? 5、delete 操作符 C/…

使用Perplexity AI免费白嫖GPT4的使用次数((智能搜索工具)

一、Perplexity AI是什么 Perplexity AI是一款高质量的智能搜索工具,它可以为用户提供简洁清晰的搜索体验。Perplexity AI内置了基于GPT-4的Copilot搜索功能,用户可以在每四个小时使用五次(白嫖GPT-4)。此外,Perplexity AI有免费和付费&#…

C++——取地址和自增运算

今天做了道题一下给我整蒙了,把实验探索发篇文章,题目如下: int a[]{10,11,12},*p&a[0];执行完*p;*p1;后a[0],a[1],a[2]的值各为多少 答案是 10, 12, 12怎么理解*p,*p1呢,我觉得可以用汉语把代码读一下,p&#xf…

【寒武纪(6)】MLU推理加速引擎MagicMind,最佳实践(三)使用框架模型ONNX

支持情况 Pytorch 只支持 1.6.0 导出。 如何生成ONNX? 解析失败 包括:Parse 过程转换失败node index,不支持的模型输入tensor name,不支持的控制流子图输入tensor name。 提取支持的子图

sizeof与strlen有哪些区别

sizeof是操作符,strlen是函数。sizeof操作符的结果类型是size_t,它在头文件中typedef为unsignedint类型,该类型保证能容纳实现所建立的最大对象的字节大小。sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以…

ArkTs变量类型、数据类型

可以参考官网学习路径学习HarmonyOS第一课|应用开发视频教程学习|HarmonyOS应用开发官网 一、变量 1、ArkTS语言 ArkTS是华为自研的开发语言。它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的…

acwing算法基础之动态规划--DP习题课1

目录 1 基础知识2 模板3 工程化 1 基础知识 暂无。。。 2 模板 暂无。。。 3 工程化 题目1:最长上升子序列,要求时间复杂度为 O ( n l o g n ) O(nlogn) O(nlogn)。 解题思路:保存每个长度下的最小的结尾元素值,遍历数组元素…

hadoop源码解读

一、hadoop rpc总结 1、RPC指的是不同进程的方法调用,分为客户端和服务端,客户端调用服务端的方法,方法的执行在服务端。 2、如何实现Hadoop RPC的调用,必须要实现协议,这个协议其实就是一个接口,但是这个…

【Android Jetpack】Room数据库

文章目录 引入EntitiesPrimary Key主键索引和唯一性对象之间的关系外键获取关联的Entity对象嵌套对象Data Access Objects(DAOs)使用Query注解的方法简单的查询带参数查询返回列的子集可被观察的查询 数据库迁移用法 引入 原始的SQLite有以下两个缺点: …

LCD屏接口与模式详解:干货超多

前言 随着时代的发展,现如今我们生活上已经随处可见的各种电子产品了,诸如手机、平板、电脑、一些其它智能单品上都有用到显示屏,它作为人机交互的重要桥梁之一,我认为它是生活中必不可少的存在,如果少了它&#xff0c…

【Electron】上下键切换消息

需求: 如图,需要监听上下键切换消息 Electron 注册 全局快捷键【globalShortcut】监听 在focus注册 在blur 注销 如苹果系统在使用某个软件(focus)时 右上角会有应用标题 Electron 代码: win.on(focus, ()>{globalShortcut.register(U…

物联网边缘计算是什么?如何实现物联网边缘计算?

物联网边缘计算是一种在物联网设备和网络中实施计算和数据处理的技术。它允许在物联网设备或网络边缘进行数据分析和处理,而不需要将所有数据传输到远程数据中心或云端进行处理。物联网边缘计算将计算和数据处理的能力迁移到物联网设备的边缘,使得设备能…

如何群发发票邮件内容

群发发票邮件内容需要仔细考虑邮件的主题、正文和附件内容,以确保邮件的准确性和完整性。以 一、明确邮件目的 在群发发票邮件时,首先需要明确邮件的目的。一般来说,发票邮件的目的是向客户或供应商提供交易的详细记录和证明。因此&#xf…

啊哒-MISC-bugku-解题步骤

——CTF解题专栏—— 题目信息: 题目:啊哒 作者:第七届山东省大学生网络安全技能大赛 提示:无 解题附件: 解题思路: 图片的话还是老三样斧winwalk、010Editor、Stegsolve。ok直接开搞! 解题…

基于UDP的TFTP文件传输

代码&#xff1a; #include <myhead.h>//实现下载功能 int download(int cfd,struct sockaddr_in sin) {char buf[516] ""; //定义资源包char fileName[128] ""; //定义文件名printf("请输入文件名:");scanf("%s",fileName…

Re0: 从零实现一个置顶任意窗口的小工具

前言 话不多说&#xff0c;先上效果&#xff1a; 这里展示的是通过下拉框选择窗口&#xff0c;让窗口显示并置顶&#xff0c;其实还可以直接通过快捷键&#xff08;先鼠标点击要置顶的窗口&#xff0c;再使用CTRLSHIFTT&#xff09;&#xff0c;本文涉及到的完整代码已上传到G…

【JavaEE初阶】 HTTP 请求 (Request)详解

文章目录 &#x1f340;序言&#x1f384;认识URL&#x1f6a9;URL 基本格式&#x1f6a9;query string&#x1f6a9;关于 URL encode &#x1f334;认识 "方法" (method)&#x1f6a9;GET方法&#x1f6a9;POST 方法&#x1f6a9; GET 和 POST 的区别 &#x1f38b;…