`
gaojingsong
  • 浏览: 1200947 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【Redis内存策略】

阅读更多

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

0
1
分享到:
评论

相关推荐

    Redis内存过期策略

    ### Redis内存过期策略详解 #### 一、引言 Redis作为一款高性能的键值存储系统,在实际应用中经常被用作缓存解决方案。为了确保内存的有效利用与系统的稳定性,Redis设计了一套高效的内存管理机制,其中包括了针对...

    美团在Redis上踩过的一些坑-3.redis内存占用飙升

    在使用Redis的过程中,他们遇到了一些问题,特别是关于Redis内存占用飙升的问题。下面我们将深入探讨这个问题以及可能的解决方案。 Redis内存占用飙升的原因多种多样,可能是由于以下几点: 1. **数据结构不当**:...

    redis过期策略和内存淘汰机制.pdf

    "Redis过期策略和内存淘汰机制" Redis是一种基于内存的NoSQL数据库,它具有高效的读写性能...Redis的过期策略和内存淘汰机制是Redis内存管理的核心机制,通过合理的配置和选择,可以达到高效的性能和合理的内存管理。

    Redis内存优化策略:10个极大节省内存的技巧.txt

    Redis内存优化策略:10个极大节省内存的技巧

    redis内存溢出bug根因分析.docx

    Redis 内存溢出 Bug 根因分析 在 Redis 中,内存溢出是一种常见的错误,会导致 Redis 服务崩溃,影响业务的稳定性。下面我们会对 Redis 内存溢出 Bug 的根因进行分析,并总结出相应的解决方案。 1. Redis 持久化 ...

    redis内存存储结构分析

    #### 三、Redis内存优化策略 针对Redis内存占用问题,可以采取以下几种策略进行优化: 1. **数据分层**:通过将热点数据与冷数据分开存储,只将热点数据放在内存中。 2. **数据压缩**:对于大文本数据,可以考虑在...

    SSM项目-redis缓存策略和配置实现

    实现redis缓存策略和Spring集成redis配置 1.1 Redis是一个key-value存储系统,支持多种存储结构,如String,Hash,list,zset等; 1.2 Redis采用内存中数据集的形式,因此读写性能优异; 1.3 Redis支持数据持久化,支持...

    redis_3.2.9_内存分布分析

    在Redis内存分布分析中,涉及到的核心知识点包括Redis的数据结构存储、数据类型操作、内存管理机制以及命令执行过程解析。 首先,我们来了解Redis的数据结构存储。Redis作为一个高性能的键值存储系统,其内部通过...

    Redis内存碎片:深度解析与优化策略

    2. **持久化**:尽管 Redis 是一个内存数据库,但它提供了持久化机制,可以将内存中的数据保存到磁盘,防止数据丢失。 3. **支持事务**:Redis 支持简单的事务功能,可以保证操作的原子性。 4. **丰富的数据类型**:...

    面试官:Redis 过期删除策略和内存淘汰策略有什么区别?.doc

    Redis 过期删除策略和内存淘汰策略的区别 Redis 是一个高效的 NoSQL 数据库,可以对 key 设置过期时间,以便删除已过期的键值对。然而,Redis 还有一个内存淘汰策略,用于删除 Redis 中的键值对以释放内存。那么,...

    redis持久化和内存策略1

    然而,内存中的数据在服务器断电或宕机后会丢失,因此,为了保证数据的持久性,Redis 提供了两种持久化策略:RDB(Redis Database Backup)模式和AOF(Append Only File)模式。 **RDB 模式** RDB 是一种快照式的...

    Redis 服务等过期策略和内存淘汰策略解析

    Redis 服务等过期策略和内存淘汰策略解析

    22_redis的过期策略能介绍一下?要不你再手写一个LRU?.zip

    标题中的“22_redis的过期策略能介绍一下?要不你再手写一个LRU?”表明我们要探讨的是Redis的缓存过期策略以及LRU(Least Recently Used)算法的实现。Redis是一个流行的键值存储系统,它广泛用于缓存、计数器、...

    浅谈redis的maxmemory设置以及淘汰策略

    redis的maxmemory参数用于控制redis可使用的最大内存容量。如果超过maxmemory的值,就会动用淘汰策略来处理expaire字典中的键。 关于redis的淘汰策略: Redis提供了下面几种淘汰策略供用户选择,其中默认的策略为...

    prometheus监控redis和报警规则详细资料—超级详细(带文档和软件包)

    通过PromQL,你可以构建复杂的查询来获取Redis的实时状态,例如查找Redis的内存使用率超过80%的情况。这在定义报警规则时非常有用。 报警规则是Prometheus的核心功能之一。在Prometheus服务器中,可以创建Alert...

    redis校验工具redis-full-check

    2. **键过期检查**:检查已过期但仍在内存中的键,这可能是由于 Redis 的过期策略未正确执行导致的。 3. **内存分析**:分析 Redis 内存使用情况,包括内存碎片率,帮助优化内存配置。 4. **持久化检查**:验证 ...

    redis面试题之删除策略.zip

    面试中,Redis 的知识常常是考察重点,尤其是它的数据删除策略,这直接关系到 Redis 的性能和内存管理。下面我们将深入探讨 Redis 的删除策略。 一、Redis 的数据类型与过期策略 Redis 提供了五种基本数据类型:...

Global site tag (gtag.js) - Google Analytics