Redis 内存管理策略
背景 Redis很多时候都是在使用内存,数据一直写,但内存是有限的,如果Redis内存满了,那么我们的很多缓存操作都会超时、失败,接着可能会引发雪崩。那么当内存达到阀值Redis是怎么处理的呢? 配置内存限制maxmemory 我们可以通过在配置文件中配置maxmemory来限制内存的最大使用情况。如果maxmemory为0则表示无限制。 在redis.cn中配置如下配置: maxmemory 1000mb //配置内存限制为1G 默认的当内存达到我们配置的指定大小时会返回错误,异常为 OOM异常 ,即已经没有足够的内存供试用。这是因为默认情况下Redis是不选择任何内存回收策略的。 配置内存回收策略 当内存达到最大限制时触发内存回收策略。我们可以通过 maxmemory-policy 来指定内存回收策略。 例如: maxmemory-policy volatile-ttl Redis内置的策略种类 noeviction: 禁止驱逐数据(默认);当内存达到限制时并且客户端尝试执行一些消耗内存的命令时返回错误,即OOM异常。 **allkeys-lru:**尝试回收最少使用的键 **volatile-lru:**尝试回收最少使用的键,但仅限于在已设置过期集合的键。 allkeys-random: 回收随机的键 **volatile-random:**回收随机的键