[转帖]redis内存限制管理--maxmemory和maxmemory-policy

redis,内存,限制,管理,maxmemory,policy · 浏览次数 : 0

小编点评

## Memory Limit Configuration in Redis Here's a summary of the memory limit configuration in the `redis.conf` file: **1. Setting Maxmemory:** * Use `config get maxmemory` or `config set maxmemory 100MB` in the `redis-cli` command. * Alternatively, edit the `redis.conf` file and set the `maxmemory` option to 100MB. **2. Maxmemory-policy (Default: noeviction):** * Redis will choose an eviction policy when memory usage exceeds `maxmemory`. * Available policies are: * `volatile-lru`: Keys are evicted based on least recently used (LRU) algorithm. * `volatile-lfu`: Keys are evicted based on least frequently used (LFU) algorithm. * `volatile-ttl`: Keys are evicted based on time-to-live (TTL) algorithm. * `volatile-random`: Keys are evicted based on random selection. * `allkeys-lru`: Keys are evicted based on LRU algorithm. * `allkeys-lfu`: Keys are evicted based on LFU algorithm. * `allkeys-random`: All keys are evicted randomly. * `noeviction`: No eviction occurs when memory exceeds `maxmemory`. **3. Setting maxmemory-policy:** * The `maxmemory-policy` option is set to specify the eviction policy to use when `maxmemory` is reached. **4. Example Configuration:** ``` # Set maxmemory to 100MB config set maxmemory 100MB # Use volatile-lru eviction policy config set maxmemory-policy volatile-lru ``` **5. Summary:** * `maxmemory` sets the maximum allowed memory for Redis. * `maxmemory-policy` determines how keys are evicted when memory is exceeded. * Different policies have different eviction algorithms, impacting how keys are cleared.

正文

https://www.cnblogs.com/zgxblog/p/14198543.html

 

  作为内存数据库,为了防止redis占用过多的内存对其他的应用程序造成影响,可以在redis.conf文件中通过设置maxmemory选项对redis所能够使用的最大内存做限制,并通过maxmemory_policy内存淘汰策略对redis占用内存超过maxmemory之后的行为做限制。

 

一、设置 maxmemory

  a、通过redis-cli命令设置:config get maxmemory和 config set maxmemory 100MB; 

    

  b、修改redis配置文件redis.conf: maxmemory 100MB

    

 

二、maxmemory-policy淘汰策略(默认:maxmemory-policy noeviction)

  当 Redis 内存使用达到 maxmemory 时,需要选择设置好的 maxmemory-policy 进行对数据进行淘汰机制。

        1.volatile-lru(least recently used):最近最少使用算法,从设置了过期时间的键key中选择空转时间最长的键值对清除掉;

        2.volatile-lfu(least frequently used):最近最不经常使用算法,从设置了过期时间的键中选择某段时间之内使用频次最小的键值对清除掉;

        3.volatile-ttl:从设置了过期时间的键中选择过期时间最早的键值对清除;

        4.volatile-random:从设置了过期时间的键中,随机选择键进行清除;

        5.allkeys-lru:最近最少使用算法,从所有的键中选择空转时间最长的键值对清除;

        6.allkeys-lfu:最近最不经常使用算法,从所有的键中选择某段时间之内使用频次最少的键值对清除;

        7.allkeys-random:所有的键中,随机选择键进行删除;

        8.noeviction:不做任何的清理工作,在redis的内存超过限制之后,所有的写入操作都会返回错误;但是读操作都能正常的进行;

 

  前缀为volatile-和allkeys-的区别在于二者选择要清除的键时的字典不同,volatile-前缀的策略代表从redisDb中的expire字典中选择键进行清除;allkeys-开头的策略代表从dict字典中选择键进行清除。  maxmemory-policy设置方式同maxmemory一样。

与[转帖]redis内存限制管理--maxmemory和maxmemory-policy相似的内容:

[转帖]redis内存限制管理--maxmemory和maxmemory-policy

https://www.cnblogs.com/zgxblog/p/14198543.html 作为内存数据库,为了防止redis占用过多的内存对其他的应用程序造成影响,可以在redis.conf文件中通过设置maxmemory选项对redis所能够使用的最大内存做限制,并通过maxmemory_p

[转帖]滥用Lua导致Redis内存无法被限制

https://axlgrep.github.io/tech/redis-memory-control.html 问题描述 最近发现线上某个Redis实例内存占用达到了17.21G, 但是该实例中实际的用户数据并不是很多(大概200Mb的样子), 此外mem_fragmentation_ratio达

[转帖]Redis系列(十七)、Redis中的内存淘汰策略和过期删除策略

我们知道Redis是分布式内存数据库,基于内存运行,可是有没有想过比较好的服务器内存也不过几百G,能存多少数据呢,当内存占用满了之后该怎么办呢?Redis的内存是否可以设置限制? 过期的key是怎么从内存中删除的?不要怕,本篇我们一起来看一下Redis的内存淘汰策略是如何释放内存的,以及过期的key

[转帖]Redis中Key的过期策略和淘汰机制

Key的过期策略 Redis的Key有3种过期删除策略,具体如下: 1. 定时删除 原理:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作优点:能够很及时的删除过期的Key,能够最大限度的节约内存缺点:对CPU时间不友好,如果过期的Key比

[转帖]Redis 内存优化在 vivo 的探索与实践

https://www.jianshu.com/p/0849b526f0f4 一、 背景 使用过 Redis 的同学应该都知道,它基于键值对(key-value)的内存数据库,所有数据存放在内存中,内存在 Redis 中扮演一个核心角色,所有的操作都是围绕它进行。 我们在实际维护过程中经常会被问到如

[转帖]Redis 的数据被删除,内存占用还这么大?

作者 | 码哥 来源 | 码哥字节 操作系统分配给 Redis 的内存有 6GB,通过指标 used_memory_human 发现存储数据只使用了 4GB,为何会这样?为何无法保存数据? 通过 CONFIG SET maxmemory 100mb或者在 redis.conf 配置文件设置 maxm

[转帖]Redis 4.0 自动内存碎片整理(Active Defrag)源码分析

阅读本文前建议先阅读此篇博客: Redis源码从哪里读起 Redis 4.0 版本增加了许多不错的新功能,其中自动内存碎片整理功能 activedefrag 肯定是非常诱人的一个,这让 Redis 集群回收内存碎片相比 Redis 3.0 更加优雅,便利。我们升级 Redis 4.0 后直接开启了a

[转帖]Redis持久化-RDB和AOF

持久化的功能: Redis是内存数据库, 数据都是存储在内存中, 为了避免进程退出导致数据的永久丢失, 需要定期将Redis中的数据以某种形式(数据或命令) 从内存保存到硬盘。 当下次Redis重启时, 利用持久化文件实现数据恢复。 除此之外, 为了进行灾难备份, 可以将持久化文件拷贝到一个远程位置

[转帖]Redis性能调优万字总结,面试必问!

https://zhuanlan.zhihu.com/p/541745804 于哥你好,最近面试挺多的,尤其是在问到java面试题,Redis被问的特别多,比如 Redis的内存模型? Redis的底层数据结构是怎么的? Redis的多线程模型 Redis的集群原理 Redis的雪崩,击穿,穿透怎么

[转帖]Redis学习五(Spring Cache For Redis).

https://www.cnblogs.com/jmcui/p/8410560.html 一、概述 缓存(Caching)可以存储经常会用到的信息,这样每次需要的时候,这些信息都是立即可用的。 常用的缓存数据库: Redis 使用内存存储(in-memory)的非关系数据库,字符串、列表、集合、散列