当前位置:首页 > 内存 > 正文

redis释放内存(redis内存分配多大合适)

  • 内存
  • 2024-06-01 08:04:37
  • 1857

一、Redis内存配置和淘汰策略

1.在Redis安装目录下找到,打开它,找到下面一行:

maxmemory是最大内存配置元素,如果默认注释掉,就会使用默认的最大值。内存大小:64位操作系统中内存大小没有限制,32位操作系统中最大可以使用3GB。

2.在客户端通过命令行查看

这里的结果是0,表示没有手动指定最大内存,使用默认的最大内存。

Redis通常建议将内存设置为最大物理内存的四分之三。

1.在配置文件中指定maxmemory参数。例如最大内存为200MB,则在配置文件中添加maxmemory209751200;
2.注意,这里如果通过命令行设置最大内存大小,则不会将maxmemory209751200行添加到配置文件中。

当Redis达到最大可用内存时,向其中存储数据会报告OOM。因此,为了避免无界数据存储导致的OOM,必须采用适当的内存回收策略。

在讨论Redis的内存逐出策略之前,我们首先要对Redis中过期键逐出的机制有一个大概的了解,实际上每个键策略中过期键的逐出策略分为三种。取消时间不同。
1.定时删除
所谓定时删除,就是在设置key过期时间的时候创建一个定时器,让定时器在key过期的时候可以立即删除key删除。关键来了。它可以立即删除过期的密钥,这对内存友好,但由于需要维护计时器,因此对CPU不友好。
2.慢删除
所谓慢删除,就是将过期的key原封不动的保留下来,但是每次获取到key后,检查获取到的key是否已经过期,如果已经过期,则删除该key。如果未过期,则返回密钥。慢删除是对CPU友好的,但是由于它不能主动删除过期的key,当过期的key大量积累时,会占用大量的内存,不利于内存。
3.定期删除
所谓定期删除是前两种删除策略的折衷。清除过期密钥的操作将定期执行,并且通过限制操作的持续时间和执行频率来减少清除操作对CPU时间的影响。
定期清除会定期轮询Redis数据库中的及时数据,采用随机抽取策略,利用过期数据的百分比来控制清除频率。其特点是:
a)设置CPU使用率有峰值,检测频率可自定义。
b)内存负载有限,长期占用内存的冷数据会被不断理。
综上所述,定期删除会定期检查存储空间(随机检查、准时检查)。
周期性删除的难点在于如何确定输出操作的执行时长和频率。如果清除操作执行得太频繁或者执行时间太长,周期性清除策略就会退化为调度。删除策略,使过多的CPU时间消耗在Delete键上。如果删除操作执行次数太少或者执行时间太短,则常规删除策略会与慢速删除策略相同,造成内存浪费。因此,必须适当设置正常清除策略的执行持续时间和频率。
定期删除在一定程度上是一种合理有效的过期键删除策略,但是由于执行时间和执行频率的限制,需要采用另一种机制(策略)来保证内存可以回收,因此,有必要引入内存消除策略。

在中,我们指出存在以下八种内存驱逐策略:
le-lru:从设置了过期时间的key中选择最近最少使用的数据进行删除;
s-lru:从所有key中选择最近最少使用的数据进行删除;
le-lfu:从由delete设置过期时间的key中选择最不常用的数据;
s-lfu:选择所有key中使用频率最低的数据进行删除;
le-random:选择设置过期时间的key中的任意数据进行删除;
s-random:从所有key中随机选择数据删除
le-ttl:从设置了过期时间的key中选择即将过期的数据进行删除;
-enviction:禁止删除数据,这也是默认策略。当没有足够的内存来容纳新数据时,新的写操作将会报错。

设置和查看内存清除策略

上一篇:redis释放内存

下一篇:redis内存