欢迎来到科站长!

Redis

当前位置: 主页 > 数据库 > Redis

Redis淘汰策略与删除机制究竟有何区别及具体应用场景?

时间:2026-02-15 17:48:40|栏目:Redis|点击:

内存耗尽后Redis会发生什么

1、内存耗尽后的基础处理原则拒绝写入并返回错误:若未配置淘汰策略(或配置为 noeviction),当内存达到 maxmemory 限制时,Redis 会拒绝所有写入命令(如 SET、LPUSH 等),并返回 OOM command not allowed when used memory maxmemory 错误。

2、内存回收机制Redis通过为键值对设置过期时间实现自动内存回收,避免无效数据长期占用内存。设置过期时间的命令 expire key ttl:设置键的过期时间为ttl秒。pexpire key ttl:设置键的过期时间为ttl毫秒。expireat key timestamp:设置键在指定timestamp秒数后过期。

3、理解 Redis 内存耗尽的两种典型表现拒绝服务模式(默认配置)当内存达到上限时,Redis 会拒绝所有写入或修改操作(如 SET、HSET、LPUSH 等),但读取(GET)和删除(DEL)操作仍可执行。此模式可避免数据损坏,但会导致业务写入功能瘫痪,需立即处理。

4、缺点:内存耗尽后写入操作会失败,可能引发业务异常。volatile-lru 说明:从已设置过期时间的键中淘汰最久未使用(LRU)的键。优点:优先释放过期键,减少内存压力,适用于缓存场景。缺点:可能误删仍被使用的过期键,导致缓存命中率下降。

看故事学Redis:再不懂,我怀疑你是假个开发

1、Redis是一个基于内存的高性能键值对数据库,最初为缓解MySQL等关系型数据库的读写压力而设计,通过缓存热点数据提升系统性能。 以下是其核心机制与问题的详细说明:Redis的诞生背景与核心功能诞生背景:互联网发展导致MySQL面临高并发读写压力,尤其是重复的读操作占用大量磁盘I/O资源。

2、锁被一个进程锁住后其他进程都无法再加锁,这样就保证了服务是幂等的了。第一个对互斥锁加锁的进程任务没有执行完就挂掉,锁又是不会释放的,其他进程又无法重复加锁,导致这个失败的任务也不能被其他进程重新执行。

3、你可能确实对GitLab的部署存在误解 GitLab作为一个功能强大的开源版本控制系统,确实在部署上相对于一些轻量级的版本控制系统(如GitHub的桌面版或某些简单的Git服务器设置)来说,过程更为复杂。但这并不意味着GitLab的部署就是“假的”或者不合理。

4、长期规划:将求职周期延长至3-6个月,避免因短期焦虑导致动作变形。长期成长建议:跳出舒适区,保持技术敏感度持续学习:关注技术社区(如InfoQ、掘金),定期阅读源码(如Redis、Netty)和经典书籍(如《深入理解Java虚拟机》)。

面试官问:Redis数据过多内存占满,会宕机吗?如何内存回收?

1、内存占满时的行为默认策略(noeviction)当内存达到maxmemory限制时,Redis会拒绝所有写请求(DEL和部分特殊请求除外),直接返回错误(如OOM command not allowed when used memory maxmemory)。此策略可避免数据丢失,但需外部监控及时扩容或清理数据。

2、Redis宕机,需分析宕机原因,如磁盘或内存满,根据情况进行处理,如内存满需考虑缓存过期回收策略问题。解决方案:打散过期时间,如设置过期时间为24小时之后+随机N分钟。分析Redis宕机原因,根据磁盘或内存满的情况进行处理,如升级配置。

3、Redis是单线程的内存数据库,在redis需要执行耗时的操作时,会fork一个新进程来做,比如bgsave,bgrewriteaof。 Fork新进程时,虽然可共享的数据内容不需要复制,但会复制之前进程空间的内存页表,这个复制是主线程来做的,会阻塞所有的读写操作,并且随着内存使用量越大耗时越长。

4、Redis Sentinel:着眼于高可用。当主节点宕机时,会自动将slave提升为master,继续提供服务。Redis Cluster:着眼于扩展性。在单个Redis内存不足时,使用Cluster进行分片存储。每个节点都保存一部分数据,并通过哈希槽机制实现数据的均匀分布和访问。

5、避免多线程竞争问题,命令执行仍保持原子性。 Redis主从复制会出现哪些问题?主节点宕机:需手动将从节点晋升为主节点,并更新应用配置,过程繁琐。性能限制:主节点写能力受单机限制,高并发场景易成为瓶颈。主节点存储容量受单机内存限制,无法扩展。

6、Redis可以设置最大内存大小,如果数据达到了内存最大限制,Redis如何处理?答案:Redis允许通过配置maxmemory参数来设置最大内存大小。当数据达到内存限制时,Redis会根据配置的淘汰策略来选择并删除部分数据。常见的淘汰策略包括:LRU(Least Recently Used):最近最少使用,删除最近最少被访问的数据。

上一篇:如何在Redis集群中快速定位被锁定的资源及其所在的具体Redis实例?

栏    目:Redis

下一篇:如何使用phpredis和predis连接带密码的Redis服务器?

本文标题:Redis淘汰策略与删除机制究竟有何区别及具体应用场景?

本文地址:https://fushidao.cc/shujuku/54776.html

广告投放 | 联系我们 | 版权申明

作者声明:本站作品含AI生成内容,所有的文章、图片、评论等,均由网友发表或百度AI生成内容,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:66551466 | 邮箱:66551466@qq.com

Copyright © 2018-2026 科站长 版权所有鄂ICP备2024089280号