Redis [5] Redis开放式问题

《Redis系列》Redis详细教程入门 开源,基于C语言开发,基于BSD协议(只要基于这个协议的都可以修改源码)的KV的Nosql的分布式数据库。​ Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。​ 它支持多种类型的数据结构,如​​字符串(strings)​散列(hashes)​列表(lists)​集合(sets)​有序集合(sorted sets)与范围查询,​bitmaps​和​地理空间(geospatial)索引半径查询。 阅读详情

针对网上Redis常见问题的思考
实际情况中 面试者不会这么提问。
如有错误 欢迎私信交流

1.redis为什么是key,value的,为什么不是支持SQL的?

Redis 本身设计思想就是 key-value
底层数据结构,数据持久化只是支持 key-value
Redis 本身方向是共享内存数据,SQL 语句更多是查找硬盘的数据。
个人理解:

Redis是这个名字本就是是Remote Dictionary Server的缩写。
Redis的作者是antirez,最早创建Redis的目的就是用作缓存,加速他的一个实时网页日志分析器项目的启动速度,因为他发现从传统数据库里加载大量数据太慢了。
Redis的原型使用Tcl实现,后来使用C语言重写,第一个实现的数据结构是List。后来在内部试用中发现效果不错,于是antirez决定将它开源,并在HackNews上做了推广。
问这种问题要么是一定高度 考察面试者对Redis整体理解,要么是对Redis 不熟悉,随口问下。

2.redis是多线程还是单线程?

从整个服务角度上看 是多进程 多线程
但是主服务是单线程
多线程,但是主要的数据读取、保存服务还是单线程
单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。
Redis 为什么是单线程,作者自己表达避免复杂锁机制,单线程服务 不需要锁
单线程依靠 nio 一样高并发
一般来说 Redis 的瓶颈并不在 CPU,而在内存和网络。如果要使用 CPU 多核,可以搭建多个 Redis 实例来解决。其实,Redis 4.0 开始就有多线程的概念了,比如 Redis 通过多线程方式在后台删除对象、以及通过 Redis 模块实现的阻塞命令等。

3.redis的持久化开启了RDB和AOF下重启服务是如何加载的?

先看AOF 如果有aof 文件 在加载aof
如果没有再看RDB 加载db文件

4.redis如果做集群该如何规划?AKF/CAP如何实现和设计?

开方式问题,根据需求场景和机器配置分析

看对方公司大小,服务器小于50台的公司基本上不舍得上集群,
或者三台机器的集群,
或者哨兵模式

一个哨兵、一台主 、一台从
控制成本情况下保证了服务稳定,主、从配置根据数据量定,大内存,2核心即可

哨兵配置能跑起来就行。

大公司:

个人推荐使用Redis cluster

服务端的分片方案,主从备份,或者一主多从,哨兵机制,
哨兵可以认为是一台特殊的Redis 服务,Redis 源码理解

也可以使用代理 Twitter 开源

或者客户端的分片策略

如果对方继续深入问:

三种策略:

1,客户端分片
2.中间件分片
3.服务端分片

以上三种是17年左右的

发展成熟的
集群、哨兵 主从模式

都是在服务端做逻辑

主从复制模式

主从复制的优缺点
优点:
master能自动将数据同步到slave,可以进行读写分离,分担master的读压力
master、slave之间的同步是以非阻塞的方式进行的,同步期间,客户端仍然可以提交查询或更新请求
缺点:
不具备自动容错与恢复功能,master或slave的宕机都可能导致客户端请求失败,需要等待机器重启或手动切换客户端IP才能恢复
master宕机,如果宕机前数据没有同步完,则切换IP后会存在数据不一致的问题
难以支持在线扩容,Redis的容量受限于单机配置

Sentinel(哨兵)模式

优点:
哨兵模式基于主从复制模式,所以主从复制模式有的优点,哨兵模式也有
哨兵模式下,master挂掉可以自动进行切换,系统可用性更高
缺点:
同样也继承了主从模式难以在线扩容的缺点,Redis的容量受限于单机配置
需要额外的资源来启动sentinel进程,实现相对复杂一点,同时slave节点作为备份节点不提供服务

Cluster模式

优点:
无中心架构,数据按照slot分布在多个节点。
集群中的每个节点都是平等的关系,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了我们只需要连接集群中的任意一个节点,就可以获取到其他节点的数据。
可线性扩展到1000多个节点,节点可动态添加或删除
能够实现自动故障转移,节点之间通过gossip协议交换状态信息,用投票机制完成slave到master的角色转换
缺点:
客户端实现复杂,驱动要求实现Smart Client,缓存slots mapping信息并及时更新,提高了开发难度。目前仅JedisCluster相对成熟,异常处理还不完善,比如常见的“max redirect exception”
节点会因为某些原因发生阻塞(阻塞时间大于 cluster-node-timeout)被判断下线,这种failover是没有必要的
数据通过异步复制,不保证数据的强一致性
slave充当“冷备”,不能缓解读压力
批量操作限制,目前只支持具有相同slot值的key执行批量操作,对mset、mget、sunion等操作支持不友好
key事务操作支持有线,只支持多key在同一节点的事务操作,多key分布不同节点时无法使用事务功能
不支持多数据库空间,单机redis可以支持16个db,集群模式下只能使用一个,即db 0 Redis Cluster模式不建议使用pipeline和multi-keys操作,减少max redirect产生的场景。

5. 10万用户一年365天的登录情况如何用redis存储,并快速检索任意时间窗内的活跃用户?

10万用户量并不大,简单的存储每个员工一个List 记录365天的登录情况,这样存储不能快速检索
那么可以每天作为key
当天登录的用户放在这个List 里

可以方便的查出任意时间段的人数登录情况
登录员工的数据可以只存id 减少内存占用

这个时间段精确到天,如果精确到秒呢
这个数据量有点庞大了,就要在mysql里设计逻辑,每次登录记录一次

6. 100万并发4G数据,10万并发400G数据,如何设计Redis存储方式?

100万 并发,按照10小时计算 平均每小时10万
每分钟1600 每秒30个请求
数据全部放在Redis 内存中就可以
完全可以满足

如果是400G 数据
全部放在内存不太现实,使用Redis 也不现实,建议使用mysql

如果一定要使用Redis 选择内存占用最小的存储方式

Prime Agent:基于持久化IPython内核的开放式强化学习智能体框架部署指南 强化学习(RL)作为机器学习的重要分支,通过智能体与环境的持续交互和试错来优化决策策略,其核心在于探索与利用的平衡。在工程实践中,强化学习智能体需要能够长期运行、保存状态并自主探索的环境,以处理复杂任务。持久化执行环境技术为此提供了解决方案,它允许智能体在中断后恢复任务状态,支持开放式探索和长期策略优化。Prime Agent框架正是基于持久化IPython内核构建的开放式强化学习工具,它将智能体置于一个可长期运行、保存状态的Python环境中,使其能够像人类程序员一样通过编写和执行代码来学习与解决问题。该 阅读详情

相关推荐

Appsflyer S2S事件上报实战:从参数获取到避坑指南(附Firebase对比)

本文详细解析了Appsflyer S2S事件上报的实战技巧,包括核心参数获取、测试环境搭建、生产环境最佳实践以及高级场景处理。通过对比Firebase的事件上报机制,帮助开发者高效避坑并优化数据上报流程,提升应用分析与营销效果。

egg99的博客 884

已解决redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException: Too many Cl异常的正确解决方法,亲测有效!!!

已解决redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException: Too many Cl异常的正确解决方法,亲测有效!!!

小明的Java问道之路 2399

Innovus快捷键大全:从入门到精通的效率提升指南

本文是Innovus快捷键从入门到精通的效率提升指南,旨在帮助芯片后端设计工程师通过掌握核心快捷键,将重复性鼠标操作转化为高效的肌肉记忆,从而显著提升版图设计、编辑和分析的工作流速度。文章系统讲解了视图导航、对象选择编辑、流程管理等关键快捷键组合,并提供了个性化配置与实战策略,助力工程师突破效率瓶颈,实现人机合一的流畅设计体验。

silver的专栏 797

JedisClusterMaxRedirectionsException:Too many Cluster redirections

JedisClusterMaxRedirectionsException:Too many Cluster redirections Redis异常信息: redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException: Too many Cluster redirections? at redis.clients.je...

stay hungry ! stay foolish! 2264

R语言的下载、安装及环境配置(Rstudio&VSCode)

R for Windows是一个免费的用于统计计算和统计制图的优秀工具,是R语言开发工具。它拥有数据存储和处理系统、数组运算工具(其向量、矩阵运算方面功能尤其强大)、完整连贯的统计分析工具、优秀的统计制图等功能。提供的图形界面,可以在其中访问控制台、创建脚本或安装其他软件包。

zegeai的博客 2万+

在 SAP ECC 中定义 ledger 时遇到 “Define exactly one leading ledger“(消息号 FAGL_LEDGER_CUST012)的错误

摘要:SAP系统要求必须且只能定义一个主导分类账(Leading Ledger)。当出现错误消息FAGL_LEDGER_CUST012时,需通过事务码FINSC_LEDGER或SPRO路径检查分类账配置,确保仅有一个分类账被标记为"LeadingLedger",其余设为"Non-leadingLedger"。主导分类账是SAP默认用于标准报表的核心分类账,修改配置需谨慎以免影响已有数据。若问题未解决,建议检查未完成配置或查阅SAP Notes获取解决方案。

金牌架构师 801

这可能是目前最全的Redis高可用技术解决方案

转自:https://mp.weixin.qq.com/s/Z-PyNgiqYrm0ZYg0r6MVeQ 原作者:张东洪 常见的使用方式 Redis的几种常见的使用方式包括:         Redis 单副本         Redis 多副本(主从)         Redis Sentinel(哨兵)         Redis Cluster         Redis 自...

时光钟摆 3万+

构建基于知识图谱的金融风险关联网络可视化系统

知识图谱是一种用于表示实体及其关系的图形结构,能够将分散的数据组织成易于理解和查询的形式。语义性:通过实体和关系的描述,赋予数据语义。结构化:以图的形式组织数据,便于计算机处理。动态性:支持实时更新,能够反映数据的最新状态。风险关联网络是指将金融风险事件、实体及其关系以图形形式表示的网络。关联性:能够展示风险事件之间的相互影响。动态性:能够实时反映风险变化。可视化:便于金融从业者直观理解风险分布。可视化系统是指通过图形界面展示数据或信息的系统。提供直观的数据显示。帮助用户快速理解复杂数据。

AI天才研究院 1057

Redis集群报错JedisClusterMaxRedirectionsException:Too many Cluster redirections?

【更多资讯及资料获取,关注微信公众号号:浅醉JAVA】 网上有很多这样的问题解决方案,但是在我测试时,都无法解决该问题。 经过漫长的折磨,终于找到问题所在,在此记录一下。 报错: redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException:Too many Cluster redirections? 原因: ...

weixin_42629535的博客 7390

Qt:一个强大而灵活的跨平台应用程序开发框架

代码示例中的源代码是简单的示例,用于演示Qt框架的一些基本特性。实际应用中,开发人员可以根据自己的需求和项目要求,使用Qt框架提供的丰富功能和组件进行开发。在Qt的官方文档和示例代码中,您可以找到更多详细的教程和示例,以帮助您更好地理解和使用Qt框架。它提供了丰富的工具和功能,支持跨多个平台进行开发,并具有高度的可定制性和灵活性。它提供了丰富的工具和功能,使得开发人员能够创建高性能、可扩展和易于维护的应用程序。下面将详细介绍Qt框架的优点,并提供一些相关的源代码示例。

CodeVorter的博客 841

数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟

本文介绍了连续图像和数字图像直方图匹配(直方图规定化)的原理、处理过程,并提供了案例进行了讲解。可以看到,直方图均衡处理是直方图匹配的一个重要桥梁。 最后,对于直方图规定化这个翻译个人觉得很low,个人感觉叫指定直方图更好理解,但Histogram Specification怎么翻译确实不太好把握,因此还是叫Histogram Matching直方图匹配最好。

老猿Python 2878

记阿里巴巴在线简历的三个开放式问题

1、请介绍一项你最热爱、最擅长的专业领域,并且介绍你在这个领域的学习经历和未来的学习规划。 产品设计。初中的时候那时候特别喜欢看“赢在中国”,快中考的时候还在看,且怂恿老爸去创业,也向马云、牛根生这样的人能走出自己风光的人生。现在想想自己多么可笑,单纯的喜欢,其余一切都不去想,大学的我们去创业全身心投入尚且很难,何况那时候还有俩个孩子的爸爸,怎么能放下这一切去创业。大三之后,终于有时间有条件去干

u013517716的博客 9326

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Cleer Arc5耳机分布式锁Redis实现可靠性

本文介绍Cleer Arc5耳机如何通过Redis实现分布式锁,解决多设备并发操作导致的竞态问题。利用SETNX与Lua脚本确保资源互斥,结合TTL、看门狗和Redlock算法提升可靠性,应用于固件升级、配置同步等关键场景,保障系统一致性与用户体验。

weixin_42601134的博客 911

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

智能对话系统如何处理开放式问题:从意图识别到上下文感知响应

自然语言处理(NLP)是人工智能的核心技术领域,其基本原理是通过算法模型理解人类语言的含义和意图。在对话系统中,意图识别技术能够将用户输入分类为特定的语义类别,这是实现智能交互的基础。从技术价值角度看,准确的意图识别能够显著提升对话系统的实用性和用户体验,避免模板化回复的生硬感。在实际应用场景中,开放式问题处理尤为关键,比如用户询问“你想怎么样”这类模糊问题时,系统需要结合上下文理解和动态意图发现机制来生成个性化响应。本文基于对话系统开发实践,重点探讨了如何通过动态意图识别和上下文感知技术来优化开放式问题的

weixin_34326558的博客 527

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SSM 开放式实验管理系统 计算机毕设源码78512

本选题则旨在通过标签分类管理等方式,实现后台首页,系统用户(管理员,学生用户,教师用户),模块管理(实验室信息、实验室课程、实验室设备、课程公告、开放实验、实验预约、取消预约、学院管理、专业管理、班级管理)等系统管理功能,从而实现网上快捷方便的对高校办公设备进行报修的需求......

m0_57774396的博客 431

2026毕设springboot+vue高校开放式实验室管理系统论文+程序

本项目基于SpringBoot+Vue开发高校实验室管理系统,旨在解决传统"人工登记+纸质审批"模式导致的资源利用率低、设备报修慢等问题。系统包含学生/教师双端,实现预约-取消-报修-设备申领全流程闭环管理,采用Redis+MQ处理高并发预约冲突,预计可使实验室利用率提升18%、设备报修响应时间缩短75%。前端使用Vue3+ElementPlus,后端采用SpringBoot+MyBatisPlus+MySQL8架构,支持500并发下响应<500ms。研究涵盖动态调度算法、角色权限

sheji5998的博客 585

Springboot开放式实验室设备预约系统设计与实现82ch4

Springboot开放式实验室设备预约系统设计与实现82ch4本系统(程序源码数据库调试部署开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容。

ck3022的博客 567

基于redis的分布式锁的实现思路

去Redis里设置一个Key(lock:xxx因为Redis是单线程的,所以只有一个客户端能设置成功。设置时一定要带过期时间。设置Key的时候,它的Value必须是一个唯一标识(比如UUID+线程ID,故事里的“名字”),用来避免误删。不能直接删除Key,要先检查Value是否匹配,匹配上再删除。而且这个“检查+删除”动作必须是一个原子操作。所以,基于Redis的分布式锁,本质就是利用Redis单线程和原子操作的特性,来模拟一个“只有一把的钥匙”

m0_73609995的博客 1091

2026毕设ssm+vue开放式实验室预约系统论文+程序

摘要:本研究针对高校实验室资源利用率低、预约冲突频发等问题,开发了一套基于SSM框架和Vue技术的实验室预约管理系统。系统实现了多校区实验室分时共享、可视化预约、信用惩戒等功能,采用Spring+MyBatis+Redis技术栈保证高并发性能,通过Vue3+ElementPlus构建响应式前端界面。研究通过文献分析、问卷调查等方法获取需求,设计了包含用户认证、实验室管理、预约调度等核心模块,预期可将实验室利用率提升15%以上,响应时间控制在500ms内。系统部署采用Docker容器化方案,支持1000并发访

sheji9301的博客 473

深入研究.NET 5的开放式遥测

OpenTelemetry 介绍OpenTelemetry是一种开放的源代码规范,工具和SDK,用于检测,生成,收集和导出遥测数据(指标,日志和跟踪),开放遥测技术得到了Cloud Na...

dotNET跨平台 629

技术面试四步应答法:结构化思维破解开放式问题

在技术面试中,开放式问题往往成为候选人的主要挑战。结构化思维作为软件工程领域的核心能力,通过将复杂问题拆解为可管理的模块,显著提升问题解决效率。其技术价值体现在快速构建知识提取路径,形成可复用的应答框架。本文基于300+真实面试案例,提炼出概念解析、应用场景、实践案例、横向对比四大维度,特别适用于分布式系统和高并发场景的技术考察。以Redis和Flink等热门前沿技术为例,演示如何通过STAR法则和矩阵分析法展现深度思考,帮助面试者在秒杀系统设计、内存泄漏排查等实际工程问题中脱颖而出。

weixin_29248313的博客 261

Redis

1.redis是开源的(开放式源代码的意思)的,免费的,高性能的 非关系型数据库2.数据存储在内存,一key-value(键值对)形式存储3.可以设置过期时间,过期自动删除,也可以做持久化。

zheng_qingyuan的博客 194

异构智能体群组架构:实现安全开放式探索与运行时约束记忆管理

在人工智能与多智能体系统领域,内存管理与资源分配是保障系统稳定运行的核心基础。内存泄漏、访问冲突等常见问题,其根源往往在于并发环境下状态与知识的低效管理。通过模块化架构设计,将复杂任务分解并由专业化智能体协同处理,能够有效提升资源利用效率与系统鲁棒性。这种架构的技术价值在于,它为动态、开放环境中的长期自主探索提供了可行性基础。其关键应用场景包括需要实时响应动态规则、处理不确定任务的自动化系统。本文聚焦的“运行时约束记忆”机制,正是将动态约束视为一种特殊记忆进行系统化管理的创新实践,它通过专门的约束管理智能体

weixin_34380948的博客 418

基于VUE的开放式实验室预约系统[VUE]-计算机毕业设计源码+LW文档

本文设计并实现了一套基于Vue.js和SpringBoot的开放式实验室预约系统,采用前后端分离架构,包含用户权限管理、实验室信息查询、预约冲突检测、数据统计可视化等功能模块。系统通过响应式界面、RESTful API接口和MySQL数据库,有效解决了传统实验室管理中资源分配不均、预约冲突等问题。测试结果表明,系统能支持200+用户并发操作,查询响应时间≤1.5秒,显著提升了实验室利用率和预约效率。未来可进一步扩展物联网集成和移动端功能,为高校实验室信息化管理提供更完善的解决方案。

QQ375279829的博客 949

Redis排位赛 - 定位赛 - 首战

Redis学习 Redis特征 速度快 存储在内存条中 使用C语言5W行书写 采用单线程模式 Register L1 Cache L2 Cache Main Memory Local Disk Remote Disk 持久化 断电不丢数据 多种数据结构 Key :{Strings/Blobs/Bitmaps} Key : {Hash Tables} Key : {Linked ...

天黑路夜人漫步 211
上一篇: 领域驱动设计实践(5)-术语
下一篇: 线上一个神奇的小问题
hamish-wu
博客等级 码龄15年 2814粉丝 162原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值