redis内存限制与淘汰策略

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis内存管理包括限制和淘汰策略。`maxmemory`配置参数决定内存上限,无设置时64位系统默认不限制,可能导致系统资源耗尽,生产环境建议设定合理值。当内存满时,未设置淘汰策略会导致写入错误。Redis提供8种淘汰策略,如LRU(最近最少使用)和LFU(最不经常使用),以及随机或基于过期时间的删除。需根据数据重要性、访问频率和一致性选择合适策略。

在使用redis过程中,往往我们会忽视一些重要的因素,例如redis内存的限制与内存淘汰策略。

首先我们来说下redis内存限制

在redis配置文件中,影响redis使用系统内存的参数是maxmemory。查看当前maxmemory值可以通过redis-cli命令执行config get maxmemory查看。

例如,要配置1gb的最大内存使用值,可以在redis配置文件中修改# maxmemory <bytes>参数

1

maxmemory 1gb

这样redis的内存使用限制最大值就为1gb,在64位系统环境下默认maxmemory为0,即没有内存限制(32位系统隐式内存限制3gb),也就是说redis将尝试使用系统中的所有可用内存,这会导致在某些场景下可能会导致系统资源被耗尽,因此在生产环境中,通常建议设置一个合理的maxmemory值来限制redis的内存使用。

接下来吴昊博客再说下redis的内存淘汰策略

如果内存达到了maxmemory最大值,并且没有配置淘汰的策略,那么在写入新的数据时,redis会返回错误,拒绝写入新的数据,可能会产生如下错误。

OOM command not allowed when used memory > 'maxmemory'.

内存淘汰策略可选的值有以下8种:

noeviction(默认策略):当内存不足时,redis会返回一个写入错误,这是最保守的策略,但也是最安全的,因为它不会删除任何数据。推荐用于那些不允许数据丢失的场景,但需要注意的是,这可能会影响业务正常运行。

allkeys-lru(最近最少使用):删除最近使用最少的keys,从而保留最近常用的keys。该策略不考虑keys的访问频率,而是更注重最近被访问的keys,认为这些keys可能是最有用的。

allkeys-lfu(最不经常用):删除最不常用的keys,从而保留常用的keys。该策略根据keys的访问频率来做出淘汰决策,即使某些keys最近没有被访问,但是他们的总访问频率很高,也会保留这些keys,通过计数统计来跟踪每个keys的访问次数,并根据这些统计结果来做出淘汰决策。

volatile-lru(有过期时间最近最少使用):内存淘汰的优先级是基于过期时间,然后在这些即将过期的keys种选择最近最少使用的keys进行删除。

volatile-lfu(有过期时间最近最不经常用):内存淘汰的优先级是基于过期时间,然后在这些即将过期的keys中选择最不常用的keys进行删除。

allkeys-random(随机删除):这种策略比较简单直接,不需要额外的计算判断,只需要随机选择一个keys进行删除即可。

volatile-random(有过期时间的随机删除):内存淘汰的优先级是基于过期时间,然后在这些即将过期的keys中,随机选择一个keys进行删除即可。

volatile-ttl(基于过期时间的删除):该策略会优先删除那些即将过期的keys,只考虑到期的时间,不考虑访问情况。

例如,whsir要配置allkeys-lru,可以在redis配置文件中修改# maxmemory-policy noeviction参数


maxmemory-policy allkeys-lru

修改完成后,在redis-cli中可通过config get maxmemory-policy查看当前的淘汰策略。

最后,在选择redis内存淘汰策略时,需要结合多个方面来进行考虑,比如数据的重要性、数据的访问频率,数据的一致性等,并根据实际效果进行调整和优化。

目录
相关文章
|
运维 NoSQL 测试技术
Redis:内存陡增100%深度复盘
本文深度分析了Redis内存陡增100%的一些细节和解决方案。
371 1
Redis:内存陡增100%深度复盘
|
2月前
|
存储 缓存 NoSQL
工作 10 年!Redis 内存淘汰策略 LRU 和传统 LRU 差异,还傻傻分不清
小富带你深入解析Redis内存淘汰机制:LRU与LFU算法原理、实现方式及核心区别。揭秘Redis为何采用“近似LRU”,LFU如何解决频率老化问题,并结合实际场景教你如何选择合适策略,提升缓存命中率。
374 3
|
4月前
|
存储 人工智能 自然语言处理
AI代理内存消耗过大?9种优化策略对比分析
在AI代理系统中,多代理协作虽能提升整体准确性,但真正决定性能的关键因素之一是**内存管理**。随着对话深度和长度的增加,内存消耗呈指数级增长,主要源于历史上下文、工具调用记录、数据库查询结果等组件的持续积累。本文深入探讨了从基础到高级的九种内存优化技术,涵盖顺序存储、滑动窗口、摘要型内存、基于检索的系统、内存增强变换器、分层优化、图形化记忆网络、压缩整合策略以及类操作系统内存管理。通过统一框架下的代码实现与性能评估,分析了每种技术的适用场景与局限性,为构建高效、可扩展的AI代理系统提供了系统性的优化路径和技术参考。
249 4
AI代理内存消耗过大?9种优化策略对比分析
|
3月前
|
存储 缓存 人工智能
Redis六大常见命令详解:从set/get到过期策略的全方位解析
本文将通过结构化学习路径,帮助读者实现从命令语法掌握到工程化实践落地的能力跃迁,系统性提升 Redis 技术栈的应用水平。
|
3月前
|
机器学习/深度学习 监控 安全
解密虚拟化弹性内存:五大核心技术与实施策略
本文深入解析虚拟化环境中实现内存弹性管理的五大核心技术与实施策略。内容涵盖内存架构演进、关键技术原理、性能优化方法及典型问题解决方案,助力提升虚拟机密度与资源利用率。
198 0
|
3月前
|
存储 NoSQL 算法
应对Redis中的并发冲突:有效解决策略
以上策略各有优劣:乐观锁和悲观锁控制得当时可以很好地解决并发问题;发布/订阅模式提高了实时响应能力;Lua脚本和Redis事务保证了命令序列的原子性;分布式锁适合跨节点的并发控制;限流措施和持久化配置从系统设计层面减少并发风险;数据分片通过架构上的优化减轻单个Redis节点的负担。正确选择适合自己应用场景的策略,是解决Redis并发冲突的关键。
280 0
|
3月前
|
边缘计算 算法 Java
Java 绿色计算与性能优化:从内存管理到能耗降低的全方位优化策略与实践技巧
本文探讨了Java绿色计算与性能优化的技术方案和应用实例。文章从JVM调优(包括垃圾回收器选择、内存管理和并发优化)、代码优化(数据结构选择、对象创建和I/O操作优化)等方面提出优化策略,并结合电商平台、社交平台和智能工厂的实际案例,展示了通过Java新特性提升性能、降低能耗的显著效果。最终指出,综合运用这些优化方法不仅能提高系统性能,还能实现绿色计算目标,为企业节省成本并符合环保要求。
149 0
|
NoSQL Redis 数据格式
redis占用内存诊断过程
开篇  写这篇文章是因为近期在准备双11大促资源的盘点,盘点过程中发现部门占用的redis空间总共720G已经接近占满了,正常情况下第一反应是联系采购新的服务器扩容内存,但是因为好奇我们的redis集群内部数据占用情况而打算先分析一下,这才有这篇文章,也给所有想对redis内存存储一窥究竟的同学提供一个思路。
2039 0
|
6月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
1月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。

热门文章

最新文章

下一篇
oss云网关配置