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

redis需要多大内存

  • 内存
  • 2024-06-12 04:01:34
  • 3247

一、Redis内存

使用redis-cli登录RedisServer并执行info命令。'#Memory'部分是Redis内存的使用情况,例如:

这是在配置文件中:

Redis支持在运行时通过命令动态修改内存大小

由于Redis可以设置最大内存大小,所以配置的内存将会被用完。那么当内存耗尽的时候,我们继续往Redis中添加数据,不就没有内存可用了吗?

其实Redis定义了几种策略来处理这种情况:

一种是写在配置文件中:

另一种是使用命令

如上所述,当Redis可用的最大内存用完时,可以使用LRU算法来淘汰内存。那么什么是LRU算法呢?

近似LRU算法

Redis使用近似LRU算法,与常规LRU算法不太一样。近似LRU算法通过随机采样来消除数据,每次随机选择5个(默认)key,并消除最近最少使用的key。

为了实现近似LRU算法,Redis为每个key添加了一个额外的24位字段来存储该key最后一次被访问的时间。

Redis3.0中近似LRU的优化

Redis3.0对近似LRU算法做了一些优化。新算法将维护一个候选池(大小为16)。池中的数据按照访问时间排序。第一个随机选择的密钥将被放入池中。仅当访问时间小于池时,才会选择随后随机选择的每个密钥。最短时间将被放入池中,直到候选池满为止。当它满了的时候,如果有新的key需要放入,那么最后访问时间最长的(最近访问过的)就会从池中移除。

需要淘汰时,只需从池中选择最近访问时间最小的key(最长时间没有被访问过的key)并淘汰即可。

LFU算法是Redis4.0中新增的淘汰策略。它的全称是LeastFrequentlyUsed,其核心思想是根据最近访问的频率来淘汰键。首先淘汰很少访问的密钥,并保留访问较多的密钥。
LFU算法可以更好地表示被访问的密钥的流行度。如果使用LRU算法,某个key长期没有被访问过,只是偶尔被访问过,那么它就被认为是热数据,不会被淘汰,而且有些key以后很可能会被访问​​到。被淘汰了。如果使用LFU算法就不会出现这种情况,因为使用一次并不会让某个key成为热点数据。
LFU有两种策略:

参考文档:面试官:如果Redis内存满了,会崩溃吗?

封面图片来源:


二、redis存储几个g的数据首先我找到了Redis的官方说法——“ASTringvaluecanbeatmax512Megabytesinlength”。非常大的键和值有两个问题:如果Redis有太多的键和值;它们首先会导致服务器上出现内存碎片。这会影响Redis内存分配的效率,导致内存使用量减少。键和值的过度性能有几个影响:a数据太大需要更多时间来发送数据b吃掉其他请求的超时。如果A的响应数据很大,如下例所示。这将使其他请求超时。


三、redis集群搭建怎么分配内存的本文主要是通过Jedis&Sentinel实现Redis集群高可用。该方案需要使用Jedis2.2.2及以上版本以及Redis2.8及以上版本。
1.安装redis
安装方法,请访问

上一篇:redis占多少内存

下一篇:redis内存