`
gaojingsong
  • 浏览: 1152885 次
  • 性别: 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过期策略和内存淘汰机制.pdf

    介绍的redis过期策略和内存淘汰机制

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

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

    redis持久化和内存策略1

    }} Redis持久化策略说明Redis中的数据都在内存中,如果断电宕机则内存数据丢失.其中数据应该持久化保存.不允许丢失.持久化策略:RDB模式AOF模式Re

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

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

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

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

    Redis面试题50道(含答案)_.pdf

    6、Redis 有哪几种数据淘汰策略? 7、Redis 官方为什么不提供 Windows 版本? 8、一个字符串类型的值能存储最大容量是多少? 9、为什么 Redis 需要把所有数据放到内存中? 10、Redis 集群方案应该怎么做?都有哪些...

    缓存使用场景,介绍redis/内存等缓存的使用场景,更新策略等

    缓存使用场景,介绍redis/内存等缓存的使用场景,更新策略等

    Redis面试专题30道.zip

    6、Redis 有哪几种数据淘汰策略? 7、Redis 官方为什么不提供 Windows 版本? 8、一个字符串类型的值能存储最大容量是多少? 9、为什么 Redis 需要把所有数据放到内存中? 10、Redis 集群方案应该怎么做?都有哪些...

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

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

    关于redis Key淘汰策略的实现方法

    在redis的配置文件中,可以设置redis内存使用的最大值,当redis使用内存达到最大值时(如何知道已达到最大值?),redis会根据配置文件中的策略选取要删除的key,并删除这些key-value的值。若根据配置的策略,没有符合...

    Redis和Memcache的区别总结

    1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等; 2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储; 3...

    redis 数据删除策略和逐出算法的问题小结

    主要介绍了redis 数据删除策略和逐出算法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    2023年Redis缓存面试题目汇总

    包括以下是常见的一些Redis缓存面试题目: 什么是Redis?...Redis的内存管理是如何进行的? 你如何监控Redis的性能? 在Redis中,如何进行大量的写操作? Redis的将来版本可能会增加什么样的功能?

    50道Redis面试题及答案冲击百万年薪.docx

    什么是Redis? Redis相比memcached有哪些优势? Redis支持哪几种数据类型? 为什么Redis需要把所有数据放到内存中?...Redis有哪几种数据淘汰策略? redis分布式 锁? Redis的内存用完了会发生什么?

    Redis持久化、主从与哨兵架构详解开发文档

    每次命令执行都会将所有redis内存快照到一个新的rdb文件里,并覆盖原有rdb快照文件。 bgsave的写时复制(COW)机制 Redis 借助操作系统提供的写时复制技术(Copy-On-Write, COW),在生成快照的同时,依然可以正常 ...

    redis.xmind

    redis的数据类型、锁的机制、淘汰策略、缓存过期策略、持久化、内存分配、降低内存占用、集群等知识体系。 redis的数据类型、锁的机制、淘汰策略、缓存过期策略、持久化、内存分配、降低内存占用、集群等知识体系。

    Redis面试题.pdf

    包含缓存穿透、雪崩、击穿发生原因和解决方案;先更新数据库还是redis(图解);是单线程还是多线程;乐观锁/悲观锁;持久化AOF/RDB + 优缺点;怎么保证原子性的;过期策略介绍+内存淘汰机制 等主流问题。

    Redis特性和应用场景

    由于所有数据保持在内存中,所以对数据的更新将异步地保存到磁盘上,Redis提供了一些策略来保存数据,比如根据时间或更新次数。数据超过内存,使用swap,保证数据; memcacache不能持久化,mongo是部分在内存; 自动...

Global site tag (gtag.js) - Google Analytics