美文网首页
redis内存淘汰策略

redis内存淘汰策略

作者: sunpy | 来源:发表于2020-05-29 15:03 被阅读0次

什么时候执行内存淘汰策略

redis为内存数据库,当redis内存耗尽的时候,将执行内存淘汰策略(就是抛弃一些key)。内存耗尽也是由于定期删除还未执行,而惰性删除访问却也没有执行,造成内存积压太多key,导致内存耗尽。

redis内存淘汰策略

no-eviction :当没有可用内存容纳新写入数据时,新写入的操作将报错,redis默认淘汰策略。

maxmemory-policy noeviction

测试:

127.0.0.1:6380> config set maxmemory 512k
OK
127.0.0.1:6380> config get maxmemory
1) "maxmemory"
2) "512000"
Jedis jedis = new Jedis("XX.XX.XXX.XXX", 6380);  //指定Redis服务Host和port   
jedis.connect();
        
int i = 0;
        
try {
    for (; i < Integer.MAX_VALUE ; i++) {
        jedis.set("v"+i, UUID.randomUUID().toString());
    }
} catch (Exception e) {
    e.printStackTrace();
} finally {
    jedis.close();
}
OOM command not allowed when used memory > 'maxmemory'.

2. allkeys-random
当内存不足容纳新写入数据,随机删除key。

127.0.0.1:6380> config get maxmemory
1) "maxmemory"
2) "1024000"
127.0.0.1:6380> config get maxmemory-policy
1) "maxmemory-policy"
2) "allkeys-random"
int i = 0;
for (; i < 3000 ; i++) {
    jedis.set("v"+i, String.valueOf(i));
}

结果:

127.0.0.1:6380> DBSIZE
(integer) 2803

查看appendonly.aof日志(部分):

DEL
$5
v1428
*2
$3
DEL
$3
v91
*2
$3
DEL
$4
v840
*2
$3

3. volatile-random
当内存不足容纳新写入数据,在设置过期时间中的key进行随机删除。
4. volatile-ttl
当内存不足容纳新写入数据,优先移除过期时间最早的key。
5. allkeys-lru
当内存不足容纳新写入数据,将最近最少使用的key删除。

127.0.0.1:6380> config get maxmemory-policy
1) "maxmemory-policy"
2) "allkeys-lru"
int i = 0;
for (; i < 2800 ; i++) {
    jedis.set("v"+i, String.valueOf(i));
}
127.0.0.1:6380> DBSIZE
(integer) 2208

6. volatile-lru
当内存不足容纳新写入数据,在设置过期时间且最近最少使用的key删除。

相关文章

  • Redis从入门到精通(三、Redis的过期策略和内存淘汰机制)

    此篇介绍了Redis过期策略以及Redis的内存淘汰机制,从内存淘汰的8种策略,如何开启内存淘汰策略到如何选择合适...

  • redis_内存淘汰策略

    redis_内存淘汰策略 介绍 Redis的内存淘汰策略是指在Redis的用于缓存的内存不足时,怎么处理需要新写入...

  • Redis知识梳理——淘汰策略

    Redis淘汰策略 Redis中设置最大使用内存,当内存数据集达到阈值时,redis将对内存数据进行淘汰,淘汰规则...

  • Redis过期策略和内存淘汰机制

    内存淘汰策略 当 Redis 节点分配的内存使用到达最大值以后,为了继续提供服务,Redis 会启动内存淘汰策略,...

  • Redis - 过期策略和内存淘汰策略

    Redis - 过期策略和内存淘汰策略 Redis内存过期策略 Redis是key-value数据库,我们可以设置...

  • 5.Redis内存淘汰策略

    Redis内存淘汰策略 Redis在使用内存达到某个阈值(通过maxmemory配置)的时候,就会触发内存淘汰机制...

  • redis基础&spark操作redis

    Redis内存淘汰策略 将Redis用作缓存时,如果内存空间用满,就会自动驱逐老的数据。 为什么要使用内存淘汰策略...

  • Redis几种常见问题

    1.Redis的过期策略以及内存淘汰机制 Redis采用的是定期删除+惰性删除策略+内存淘汰机制。 定期删除,Re...

  • redis内存淘汰策略

    什么时候执行内存淘汰策略 redis为内存数据库,当redis内存耗尽的时候,将执行内存淘汰策略(就是抛弃一些ke...

  • redis内存满了解决方法

    redis内存满了解决方法: 1,增加内存; 2,使用内存淘汰策略。 3,Redis集群。 下面我们就来重点介绍一...

网友评论

      本文标题:redis内存淘汰策略

      本文链接:https://www.haomeiwen.com/subject/itpzahtx.html