1,增加内存;

2,使用内存淘汰策略。(LRU)

3,Redis集群。

 

重点介绍下23;

第2点:

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

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

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

其默认值是noeviction

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

规则名称

规则说明

volatile-lru

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

allkeys-lru

使用LRU算法删除一个键,最少使用的

volatile-random

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

allkeys-random

随机删除一个键

volatile-ttl

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

noeviction

不删除键,只返回错误

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

作为内存数据库,出于对性能和内存消耗的考虑,Redis 的淘汰算法实际实现上并非针对所有 key,而是抽样一小部分并且从中选出被淘汰的 key。

使用 Redis 缓存数据时,为了提高缓存命中率,需要保证缓存数据都是热点数据。可以将内存最大使用量设置为热点数据占用的内存量,然后启用 allkeys-lru 淘汰策略,将最近最少使用的数据淘汰。

Redis 4.0 引入了 volatile-lfu 和 allkeys-lfu 淘汰策略,LFU 策略通过统计访问频率,将访问频率最少的键值对淘汰。

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

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

第3点:

3.集群怎么做

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

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

· 客户端分片

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

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

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

· 代理分片(redis中间件)

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

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

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

·Redis Cluster

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

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

Redis:内存满了的解决方案相关推荐

  1. 蚂蚁金服java研发岗二面:Redis内存满了该怎么办了

    原文作者来源于非科班的科班 ,作者黎杜 概述 「三大缓存问题」只是Redis的其中的一小部分的知识点,想要深入学习Redis还要学习比较多的知识点. 那么今天就带来了一个面试常问的一个问题:「假如你的 ...

  2. redis删除过期key的算法_面试官别再问我Redis内存满了该怎么办了

    概述 Redis的文章,我之前写过一篇关于「Redis的缓存的三大问题」,累计阅读也快800了,对于还只有3k左右的粉丝量,能够达到这个阅读量,已经是比较难了. 这说明那篇文章写的还过得去,收到很多人 ...

  3. 别再问我Redis内存满了该怎么办了

    概述 Redis的文章,我之前写过一篇关于「Redis的缓存的三大问题」,累计阅读也快800了,对于还只有3k左右的粉丝量,能够达到这个阅读量,已经是比较难了. 这说明那篇文章写的还过得去,收到很多人 ...

  4. 面试官问我:Redis 内存满了怎么办

    转载自 想不到!面试官问我:Redis 内存满了怎么办 Redis占用内存大小 Redis的内存淘汰 LRU算法 LRU在Redis中的实现 LFU算法 问题 Redis占用内存大小 我们知道Redi ...

  5. Redis 内存满了怎么办?这样置才正确!

    在Redis中,如果过期的数据太多,定时删除无法删除完全(每次删除完过期的 key 还是超过 25%),同时这些 key 再也不会被客户端请求,就无法走惰性删除,内存被打满会怎样? 答案是走内存淘汰机 ...

  6. 想不到!面试官问我:Redis 内存满了怎么办?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://rrd.me/et29e Redis占用内存大 ...

  7. 经典面试题:Redis 内存满了怎么办?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 千山qianshan 来源 | http:// ...

  8. 美团面试题:Redis 内存满了怎么办?

    今日推荐强制双休!腾讯调整加班机制,21 点前必须离开工位 使用雪花id或uuid作为Mysql主键,被老板怼了一顿! 盘点 12 个 GitHub 上的高仿项目 CTO 说了,用错 @Autowir ...

  9. php使用redis内存不足,PHP开发:Redis 内存满了怎么办?

    Redis占用内存大小 Redis的内存淘汰 LRU算法 LRU在Redis中的实现 LFU算法 问题 Redis占用内存大小 我们知道Redis是基于内存的key-value数据库,因为系统的内存大 ...

最新文章

  1. R假设检验之Durbin-Watson检验(Durbin-Watson Test)
  2. 51. N-Queens N 皇后
  3. python开发网页视频播放器_HTML5 VideoAPI,打造自己的Web视频播放器
  4. 计算机网络----wireshark抓包
  5. 后端http缓存策略
  6. python gps与高德地图poi_Python——使用高德API获取指定城指定类别POI并实现XLSX文件合并...
  7. Vim 命令常用功能详解
  8. go实现本地文件搜索引擎
  9. HTML CSS 兼容所有浏览器的自定义鼠标样式
  10. 中国省份城市0-N编号
  11. 生成模型应用——使用变分自编码器(VAE)控制人脸属性生成人脸图片
  12. java 页眉页脚_Java 添加Word页眉、页脚
  13. HTML文本框边框宽度,如何设置文本框尺寸 word文本框怎么设置统一大小
  14. Python 对象烤地瓜
  15. obs噪音抑制调多少合适_(3)阿里国际站OBS申请设置使用教程,OBS音频没有声音怎么办?国际站直播回放如何下载?...
  16. Eclipse Plungins--Pydev
  17. Thttpd上传大文件的方法
  18. Xposed模块APP代码混淆
  19. 05-阿里云视频点播服务与谷粒学院整合视频点播技术
  20. 百度提前批-面试凉凉之-梯度下降

热门文章

  1. android 模拟器
  2. ICMP报文的格式和种类
  3. pmp考试中容易混淆的22组概念
  4. 从需求出发来看关系模型与非关系模型–关系模型与非关系模型概述
  5. DEDE模板教程【Mytag 标记】
  6. Matlab 坐标轴比例一致导致图形变形
  7. 谱减法降噪的matlab代码实现
  8. 解决ubuntu无法修改分辨率为1920*1080问题
  9. VC++连接远程Oracle数据库
  10. 机器学习入门学习笔记:(3.1)决策树算法