视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
redis内存满了怎么解决
2020-11-09 06:57:17 责编:小采
文档


redis内存满了解决方法:

1,增加内存。

2,使用内存淘汰策略。

3,Redis集群。

重点介绍下2、3:

第二点:

我们知道,redis设置配置文件的maxmemory参数,可以控制其最大可用内存大小(字节)。

那么当所需内存,超过maxmemory怎么办?

这个时候就该配置文件中的maxmemory-policy出场了。

其默认值是noeviction。

下面我将列出当可用内存不足时,删除redis键具有的淘汰规则。

规则说明:

1、volatile-lru

使用LRU算法删除一个键(只对设置了生存时间的键)

2、allkeys-lru

使用LRU算法删除一个键

3、volatile-random

随机删除一个键(只对设置了生存时间的键)

4、allkeys-random

随机删除一个键

5、volatile-ttl

删除生存时间最近的一个键

6、noeviction

不删除键,只返回错误

LRU算法,least RecentlyUsed,最近最少使用算法。也就是说默认删除最近最少使用的键。

但是一定要注意一点!redis中并不会准确的删除所有键中最近最少使用的键,而是随机抽取3个键,删除这三个键中最近最少使用的键。

那么3这个数字也是可以设置的,对应位置是配置文件中的maxmeory-samples.

三、集群怎么做

Redis仅支持单实例,内存一般最多10~20GB。对于内存动辄100~200GB的系统,就需要通过集群来支持了。

Redis集群有三种方式:客户端分片、代理分片、RedisCluster(在之后一篇文章详细说一下。)

1、客户端分片

通过业务代码自己实现路由

优势:可以自己控制分片算法、性能比代理的好

劣势:维护成本高、扩容/缩容等运维操作都需要自己研发

2、代理分片

代理程序接收到来自业务程序的数据请求,根据路由规则,将这些请求分发给正确的Redis实例并返回给业务程序。使用类似Twemproxy、Codis等中间件实现。

优势:运维方便、程序不用关心如何链接Redis实例

劣势:会带来性能消耗(大概20%)、无法平滑扩容/缩容,需要执行脚本迁移数据,不方便(Codis在Twemproxy基础上优化并实现了预分片来达到Auto Rebalance)。

3、Redis Cluster

优势:官方集群解决方案、无中心节点,和客户端直连,性能较好

劣势:方案太重、无法平滑扩容/缩容,需要执行相应的脚本,不方便、太新,没有相应成熟的解决案例

更多Redis相关知识,请访问Redis使用教程栏目!

下载本文
显示全文
专题