Redis最大内存的设置是通过设置maxmemory来完成的,格式为maxmemory bytes ,当目前使用的内存超过了设置的最大内存,就要进行内存释放了, 当需要进行内存释放的时候,需要用某种策略对保存的的对象进行删除。Redis有六种策略(默认的策略是noeviction)
Redis最大内存设置
默认情况下,在32位OS中,Redis最大使用3GB的内存,在64位OS中则没有限制。
在使用Redis时,应该对数据占用的最大空间有一个基本准确的预估,并为Redis设定最大使用的内存,
否则在64位OS中Redis会无限制地占用内存(当物理内存被占满后会使用swap空间),容易引发各种各样的问题。
通过如下配置控制Redis使用的最大内存:
maxmemory 100mb
在内存占用达到了maxmemory后,再向Redis写入数据时,Redis会:
1)根据配置的数据淘汰策略尝试淘汰数据,释放空间
2)如果没有数据可以淘汰,或者没有配置数据淘汰策略,那么Redis会对所有写请求返回错误,但读请求仍然可以正常执行
maxmemory <bytes>
# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
# is reached. You can select among five behaviors:
#
# volatile-lru -> remove the key with an expire set using an LRU algorithm
# allkeys-lru -> remove any key accordingly to the LRU algorithm
# volatile-random -> remove a random key with an expire set
# allkeys-random -> remove a random key, any key
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
# noeviction -> don't expire at all, just return an error on write operations
#
# Note: with any of the above policies, Redis will return an error on write
# operations, when there are not suitable keys for eviction.
#
# At the date of writing this commands are: set setnx setex append
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
# getset mset msetnx exec sort
#
# The default is:
#
# maxmemory-policy noeviction
Redis提供了下面几种淘汰策略供用户选择,其中默认的策略为noeviction策略:
1)noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错。
2)allkeys-lru:在主键空间中,优先移除最近未使用的key。
3)volatile-lru:在设置了过期时间的键空间中,优先移除最近未使用的key。
4)allkeys-random:在主键空间中,随机移除某个key。
5)volatile-random:在设置了过期时间的键空间中,随机移除某个key。
6)volatile-ttl:在设置了过期时间的键空间中,具有更早过期时间的key优先移除。
淘汰策略的选择可以通过下面的配置指定:
# maxmemory-policy noeviction
相关推荐
### Redis内存过期策略详解 #### 一、引言 Redis作为一款高性能的键值存储系统,在实际应用中经常被用作缓存解决方案。为了确保内存的有效利用与系统的稳定性,Redis设计了一套高效的内存管理机制,其中包括了针对...
在使用Redis的过程中,他们遇到了一些问题,特别是关于Redis内存占用飙升的问题。下面我们将深入探讨这个问题以及可能的解决方案。 Redis内存占用飙升的原因多种多样,可能是由于以下几点: 1. **数据结构不当**:...
"Redis过期策略和内存淘汰机制" Redis是一种基于内存的NoSQL数据库,它具有高效的读写性能...Redis的过期策略和内存淘汰机制是Redis内存管理的核心机制,通过合理的配置和选择,可以达到高效的性能和合理的内存管理。
Redis内存优化策略:10个极大节省内存的技巧
Redis 内存溢出 Bug 根因分析 在 Redis 中,内存溢出是一种常见的错误,会导致 Redis 服务崩溃,影响业务的稳定性。下面我们会对 Redis 内存溢出 Bug 的根因进行分析,并总结出相应的解决方案。 1. Redis 持久化 ...
#### 三、Redis内存优化策略 针对Redis内存占用问题,可以采取以下几种策略进行优化: 1. **数据分层**:通过将热点数据与冷数据分开存储,只将热点数据放在内存中。 2. **数据压缩**:对于大文本数据,可以考虑在...
实现redis缓存策略和Spring集成redis配置 1.1 Redis是一个key-value存储系统,支持多种存储结构,如String,Hash,list,zset等; 1.2 Redis采用内存中数据集的形式,因此读写性能优异; 1.3 Redis支持数据持久化,支持...
在Redis内存分布分析中,涉及到的核心知识点包括Redis的数据结构存储、数据类型操作、内存管理机制以及命令执行过程解析。 首先,我们来了解Redis的数据结构存储。Redis作为一个高性能的键值存储系统,其内部通过...
2. **持久化**:尽管 Redis 是一个内存数据库,但它提供了持久化机制,可以将内存中的数据保存到磁盘,防止数据丢失。 3. **支持事务**:Redis 支持简单的事务功能,可以保证操作的原子性。 4. **丰富的数据类型**:...
Redis 过期删除策略和内存淘汰策略的区别 Redis 是一个高效的 NoSQL 数据库,可以对 key 设置过期时间,以便删除已过期的键值对。然而,Redis 还有一个内存淘汰策略,用于删除 Redis 中的键值对以释放内存。那么,...
然而,内存中的数据在服务器断电或宕机后会丢失,因此,为了保证数据的持久性,Redis 提供了两种持久化策略:RDB(Redis Database Backup)模式和AOF(Append Only File)模式。 **RDB 模式** RDB 是一种快照式的...
Redis 服务等过期策略和内存淘汰策略解析
标题中的“22_redis的过期策略能介绍一下?要不你再手写一个LRU?”表明我们要探讨的是Redis的缓存过期策略以及LRU(Least Recently Used)算法的实现。Redis是一个流行的键值存储系统,它广泛用于缓存、计数器、...
redis的maxmemory参数用于控制redis可使用的最大内存容量。如果超过maxmemory的值,就会动用淘汰策略来处理expaire字典中的键。 关于redis的淘汰策略: Redis提供了下面几种淘汰策略供用户选择,其中默认的策略为...
通过PromQL,你可以构建复杂的查询来获取Redis的实时状态,例如查找Redis的内存使用率超过80%的情况。这在定义报警规则时非常有用。 报警规则是Prometheus的核心功能之一。在Prometheus服务器中,可以创建Alert...
2. **键过期检查**:检查已过期但仍在内存中的键,这可能是由于 Redis 的过期策略未正确执行导致的。 3. **内存分析**:分析 Redis 内存使用情况,包括内存碎片率,帮助优化内存配置。 4. **持久化检查**:验证 ...
面试中,Redis 的知识常常是考察重点,尤其是它的数据删除策略,这直接关系到 Redis 的性能和内存管理。下面我们将深入探讨 Redis 的删除策略。 一、Redis 的数据类型与过期策略 Redis 提供了五种基本数据类型:...