Redis的内存回收原理,及内存过期淘汰策略详解

Redis内存回收机制

Redis的内存回收主要围绕以下两个方面:

1.Redis过期策略:删除过期时间的key值

2.Redis淘汰策略:内存使用到达maxmemory上限时触发内存淘汰数据

Redis的过期策略和内存淘汰策略不是一件事,实际研发中不要弄混淆了,下面会完整的介绍两者。

Redis过期策略

过期策略通常有以下三种:
1.定时过期

每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。

2.惰性过期

只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。

3.定期过期

每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果。

Redis中同时使用了惰性过期和定期过期两种过期策略

Redis淘汰策略

1.简介

Redis的内存淘汰策略,是指当内存使用达到maxmemory极限时,需要使用LAU淘汰算法来决定清理掉哪些数据,以保证新数据的存入。

2、LRU算法

Redis默认情况下就是使用LRU策略算法。

LRU算法(least RecentlyUsed),最近最少使用算法,也就是说默认删除最近最少使用的键。

但是一定要注意一点!redis中并不会准确的删除所有键中最近最少使用的键,而是随机抽取3个键,删除这三个键中最近最少使用的键。

那么3这个数字也是可以可以设置采样的大小,如果设置为10,那么效果会更好,不过也会耗费更多的CPU资源。对应位置是配置文件中的maxmeory-samples。

3.缓存清理配置

maxmemory用来设置redis存放数据的最大的内存大小,一旦超出这个内存大小之后,就会立即使用LRU算法清理掉部分数据。

对于64 bit的机器,如果maxmemory设置为0,那么就默认不限制内存的使用,直到耗尽机器中所有的内存为止;,但是对于32 bit的机器,有一个隐式的闲置就是3GB

4.Redis数据淘汰策略

maxmemory-policy,可以设置内存达到最大闲置后,采取什么策略来处理。

对应的淘汰策略规则如下:

file

image.png

1)noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。

2)allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。

3)allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。

4)volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。

5)volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。

6)volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。

5.缓存清理的流程

1)客户端执行数据写入操作

2)redis server接收到写入操作之后,检查maxmemory的限制,如果超过了限制,那么就根据对应的policy清理掉部分数据

3)写入操作完成执行。

总结

redis的内存淘汰策略用于处理内存不足时的需要申请额外空间的数据,内存淘汰策略的选取并不会影响过期的key的处理。过期策略用于处理过期的缓存数据。

欢迎添加小编的Java学习群,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2019年最新的Java资料和0基础入门教程视频,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑

file

本文由博客一文多发平台 OpenWrite 发布!

在当今数字化教育蓬勃发展的背景下,校园网络作为教学与科研的关键基础设施,其重要性日益凸显。本文旨在探讨小型校园网络的规划与设计,以满足网络实验教学的需求,为相关专业师生提供一个高效、稳定且功能完备的网络实验环境,助力教学活动顺利开展,提升学生的实践能力和创新思维。 网络实验教学要求校园网络具备高度的灵活性与可扩展性。学生需在实验过程中模拟各种网络拓扑结构、配置不同网络设备参数,这就要求网络能够快速调整资源分配,适应多样化的实验场景。同时,为保证实验数据的准确性和实验过程的稳定性,网络的高可靠性与低延迟特性不可或缺。此外,考虑到校园内多用户同时接入的场景,网络还需具备良好的并发处理能力,确保每位用户都能流畅地进行实验操作。 采用层次化结构构建小型校园网络,分为核心层、汇聚层与接入层。核心层选用高性能交换机,负责高速数据转发与关键路由决策,保障网络主干的稳定运行;汇聚层连接不同教学区域,实现数据的汇聚与初步处理,通过划分虚拟局域网(VLAN)对不同专业或班级的实验流量进行隔离,避免相互干扰;接入层则直接连接学生终端设备,提供充足的接入端口,满足大量用户同时接入的需求,并通过端口安全策略限制非法设备接入,保障网络安全。 在设备选型上,核心层交换机需具备高吞吐量、低延迟以及丰富的路由协议支持能力,以满足复杂网络流量的转发需求;汇聚层交换机则注重VLAN划分与管理功能,以及对链路聚合的支持,提升网络的可靠性和带宽利用率;接入层交换机则需具备高密度端口、灵活的端口配置以及完善的用户认证功能。配置方面,通过静态路由与动态路由协议相结合的方式,确保网络路径的最优选择;在汇聚层与接入层设备上启用VLAN Trunk技术,实现不同VLAN间的数据交换;同时,利用网络管理软件对设备进行集中监控与管理,实时掌握网络运行状态,及时发现并解决潜在问题。 网络安全是校园网络规划的关键环节。在接入层设置严
管理后台HTML页面是Web开发中一种常见的实践,主要用于构建企业或组织内部的管理界面,具备数据监控、用户管理、内容编辑等功能。本文将探讨一套美观易用的二级菜单目录设计,帮助开发者创建高效且直观的后台管理系统。 HTML5:作为超文本标记语言的最新版本,HTML5增强了网页的互动性和可访问性,提供了更多语义元素,如<header>、<nav>、<section>、<article>等,有助于清晰地定义网页结构。在管理后台中,HTML5可用于构建页面布局,划分功能区域,并集成多媒体内容,如图像、音频和视频。 界面设计:良好的管理后台界面应具备清晰的导航、一致的布局和易于理解的图标。二级菜单目录设计能够有效组织信息,主菜单涵盖大类功能,次级菜单则提供更具体的操作选项,通过展开和折叠实现层次感,降低用户认知负担。 CSS:CSS是用于控制网页外观和布局的语言,可对HTML元素进行样式设置,包括颜色、字体、布局等。在管理后台中,CSS能够实现响应式设计,使页面在不同设备上具有良好的显示效果。借助CSS预处理器(如Sass或Less),可以编写更高效、模块化的样式代码,便于维护。 文件结构: guanli.html:可能是管理页面的主入口,包含后台的主要功能和布局。 xitong.html:可能是系统设置或配置页面,用于管理员调整系统参数。 denglu.html:登录页面,通常包含用户名和密码输入框、登录按钮,以及注册或忘记密码的链接。 image文件夹:存放页面使用的图片资源,如图标、背景图等。 css文件夹:包含后台系统的样式文件,如全局样式表style.css或按模块划分的样式文件。 响应式设计:在移动设备普及的背景下,管理后台需要支持多种屏幕尺寸。通过媒体查询(Media Queries)和流式布局(Fluid Grids),可以确保后台在桌面、平板和手机上都能良好展示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值