您当前的位置:首页 > 电脑百科 > 数据库 > Redis

Redis 回收进程是如何工作的?

时间:2023-05-18 16:53:33  来源:今日头条  作者:Java技术汇

redis内存管理主要依靠两个进程:内存回收进程和AOF持久化进程。下面将重点讲解 Redis 内存回收机制,以及这个机制如何工作。

一、Redis的内存回收机制

Redis 使用了内存池(memory pool)来分配空间,并且它针对不同对象的大小,提供了不同的内存分配策略。

Redis中所有的键值都保存在内存中,如果内存占满,Redis服务器就会stop working, 同时遇到读写请求将返回错误信息OOM(Out of Memory)。为了预防这种情况,Redis 为内存回收提供了三个命令:

1、基于过期时间取消 key

2、基于 LRU (Least Recently Used)算法淘汰长时间未使用的键/值对

3、数据库压缩

二、Redis的内存回收进程

1、什么是Redis的内存回收进程?

Redis 的内存回收处理单独形成一个线程或者进程,在 Redis 中被称为“内存回收进程”(memory reclaiming thread/process)。Redis 首先在时间上进行判断,对那些已过期但是尚未被删除的 keys 进行标记,这样它们就可以在之后被立即释放并回收所占用的内存。

2、原理与操作流程

Redis 内存回收进程的基本原理是周期性地扫描存储数据库中所有的键,并一步步对所有键进行检测:

(1)、判断键是否已经过期

(2)、是否使用了LRU算法,以及它最后一次被访问的时间

(3)、是否被删除但仍然留在内存中(当多个客户端同时访问同一个 key VALUE 时,如果没有正确处理引用计数,则会发生这种情况)

首先检查是否有需要根据过期时间自动删除的键(expired key)。每次检查只对一小部分键进行处理。如果有符合条件的 key,内存回收线程就把它们标记为过期,在之后立即回收并释放为其分配的内存。

然后,Redis 检查那些没有被过期,但仍然占用大量内存的键。如果所选键比快满了,Redis 就选择其中最早要删除的几个键,并释放它们所占用的空间。

除了定期回收外,Redis 还支持手动释放 key VALUE 占用内存的方法:通过向 Redis 发送一个 flushall 命令和可使用“shutdown”断开连接的方式来清除所有数据。

三、总结

Redis 的内存管理主要依靠两个进程:内存回收进程和AOF持久化进程(如果打开). 在Redis中,所有键值都保存在内存中,如果内存满了,Redis将停止工作,同时遇到读写请求将返回错误信息OOM(OutOfMemory)。为了预防这种情况,Redis为内存回收提供了三个命令。

Redis的内存回收进程对Redis的性能以及数据安全都有很大的影响。谨慎编写和使用上述三个操作并对内存进行适度分配可以帮助我们充分利用Redis的高效性能,并确保数据不会被意外损坏或删除。在实际使用过程中,开发人员应该结合业务特点选择合适的手段进行规划和调整,以优化内部的性能。



Tags:Redis   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除。
▌相关推荐
Redis的内存管理主要依靠两个进程:内存回收进程和AOF持久化进程。下面将重点讲解 Redis 内存回收机制,以及这个机制如何工作。一、Redis的内存回收机制Redis 使用了内存池(memo...【详细内容】
2023-05-18  Tags: Redis  点击:(0)  评论:(0)  加入收藏
Jedis 和 Redisson 都是 Java 开发者广泛使用的 Redis Java 客户端之一。它们能够很好地与 Redis 数据库进行交互,提供丰富的功能和灵活的配置选项。虽然它们都可以用于在 Ja...【详细内容】
2023-05-18  Tags: Redis  点击:(0)  评论:(0)  加入收藏
Redis是一款高性能、非关系型的键值存储数据库。在使用Redis时,随着数据量的不断增长,需要考虑如何降低Redis的内存占用情况。下面将介绍Redis降低内存使用的常见方法。1、清...【详细内容】
2023-05-18  Tags: Redis  点击:(1)  评论:(0)  加入收藏
Redis是一款基于内存的键值存储数据库,其全称为Remote Dictionary Server,中文名为远程字典服务器。它是一种高性能的键值存储系统,支持多种数据结构,如字符串、列表、哈希表、...【详细内容】
2023-05-07  Tags: Redis  点击:(7)  评论:(0)  加入收藏
在实际应用中,还需要根据具体需求和场景选择合适的方法。有时候,将这些方法组合使用也是一个很好的选择。例如,可以将Redis事务和管道结合使用,同时保证原子性和网络通信效率。...【详细内容】
2023-05-06  Tags: Redis  点击:(14)  评论:(0)  加入收藏
Redis是一个基于内存的键值存储系统,其单线程架构在性能方面具有很大的优势。以下是单线程Redis如此快的几个原因: 内存存储:Redis将所有数据存储在内存中,这使得读写操作非常快...【详细内容】
2023-05-05  Tags: Redis  点击:(6)  评论:(0)  加入收藏
1. 简介1.1 什么是Redis事务Redis事务(Transaction)通过将多个Redis操作封装为一个原子性的操作序列,确保在事务执行过程中,不会受到其他客户端的干扰。从而在保证数据一致性的...【详细内容】
2023-05-05  Tags: Redis  点击:(20)  评论:(0)  加入收藏
Redis是一个非常快速和高效的内存数据存储系统,但在某些情况下,一些操作可能会比其他操作更慢,这可能会导致Redis性能的下降。以下是一些可能会导致Redis变慢的操作: 频繁使用KE...【详细内容】
2023-05-02  Tags: Redis  点击:(6)  评论:(0)  加入收藏
什么是发号器在互联网场景中,很多业务要求生成唯一的ID号,以用于区分某些资源。常见例子:电商系统中的订单ID号、聊天群组中的消息ID号、上传文件到存储系统中之后生成的文件ID...【详细内容】
2023-04-28  Tags: Redis  点击:(16)  评论:(0)  加入收藏
本文详细介绍了Redis的三大集群模式:主从复制、哨兵模式和Cluster模式。每种模式都有其特点和应用场景。在实际应用中,可以根据系统的需求和特点选择合适的Redis集群模式,以实...【详细内容】
2023-04-27  Tags: Redis  点击:(25)  评论:(0)  加入收藏
▌简易百科推荐
Redis的内存管理主要依靠两个进程:内存回收进程和AOF持久化进程。下面将重点讲解 Redis 内存回收机制,以及这个机制如何工作。一、Redis的内存回收机制Redis 使用了内存池(memo...【详细内容】
2023-05-18  Java技术汇  今日头条  Tags:Redis   点击:(0)  评论:(0)  加入收藏
Redis是一款高性能、非关系型的键值存储数据库。在使用Redis时,随着数据量的不断增长,需要考虑如何降低Redis的内存占用情况。下面将介绍Redis降低内存使用的常见方法。1、清...【详细内容】
2023-05-18  Java技术汇  今日头条  Tags:Redis   点击:(1)  评论:(0)  加入收藏
Redis是一款基于内存的键值存储数据库,其全称为Remote Dictionary Server,中文名为远程字典服务器。它是一种高性能的键值存储系统,支持多种数据结构,如字符串、列表、哈希表、...【详细内容】
2023-05-07  小乖兽技术  今日头条  Tags:Redis   点击:(7)  评论:(0)  加入收藏
在实际应用中,还需要根据具体需求和场景选择合适的方法。有时候,将这些方法组合使用也是一个很好的选择。例如,可以将Redis事务和管道结合使用,同时保证原子性和网络通信效率。...【详细内容】
2023-05-06  一灯架构  微信公众号  Tags:Redis   点击:(14)  评论:(0)  加入收藏
Redis是一个基于内存的键值存储系统,其单线程架构在性能方面具有很大的优势。以下是单线程Redis如此快的几个原因: 内存存储:Redis将所有数据存储在内存中,这使得读写操作非常快...【详细内容】
2023-05-05  大厂背锅侠  今日头条  Tags:Redis   点击:(6)  评论:(0)  加入收藏
1. 简介1.1 什么是Redis事务Redis事务(Transaction)通过将多个Redis操作封装为一个原子性的操作序列,确保在事务执行过程中,不会受到其他客户端的干扰。从而在保证数据一致性的...【详细内容】
2023-05-05    一灯架构  Tags:Redis   点击:(20)  评论:(0)  加入收藏
Redis是一个非常快速和高效的内存数据存储系统,但在某些情况下,一些操作可能会比其他操作更慢,这可能会导致Redis性能的下降。以下是一些可能会导致Redis变慢的操作: 频繁使用KE...【详细内容】
2023-05-02  大厂背锅侠  今日头条  Tags:Redis   点击:(6)  评论:(0)  加入收藏
什么是发号器在互联网场景中,很多业务要求生成唯一的ID号,以用于区分某些资源。常见例子:电商系统中的订单ID号、聊天群组中的消息ID号、上传文件到存储系统中之后生成的文件ID...【详细内容】
2023-04-28  编程技术之道  微信公众号  Tags:Redis   点击:(16)  评论:(0)  加入收藏
本文详细介绍了Redis的三大集群模式:主从复制、哨兵模式和Cluster模式。每种模式都有其特点和应用场景。在实际应用中,可以根据系统的需求和特点选择合适的Redis集群模式,以实...【详细内容】
2023-04-27  一灯架构  微信公众号  Tags:Redis   点击:(25)  评论:(0)  加入收藏
Sets 无序集合,他的功能就好像你熟悉的 Java 中的 HashSet 一样。集合是通过散列表实现的,所以添加、删除、查找元素的时间复杂度是 O(1)。1. 是什么Sets 是 String 类型的无...【详细内容】
2023-04-27   码哥字节  微信公众号  Tags:Redis   点击:(25)  评论:(0)  加入收藏
站内最新
站内热门
站内头条