背景

Redis 数据库内存数据满了,会宕机吗?答案是:不会让它出现存满的情况,在使用Redis的时候我们要配置Redis能使用的最大的内存大小,存到一定容量的时候还有Redis的内存淘汰策略呢,还有LRU算法进行淘汰,等等。

Redis的内存淘汰策略

1、Redis占用内存大小

我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。

通过配置文件配置

通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小

通过命令修改

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

如果不设置最大内存大小或者设置最大内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存

Redis的内存淘汰

既然可以设置Redis最大占用内存大小,那么配置的内存就有用完的时候。那在内存用完的时候,还继续往Redis里面添加数据不就没内存可用了吗?

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

noeviction(默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)

allkeys-lru:从所有key中使用LRU算法进行淘汰

volatile-lru:从设置了过期时间的key中使用LRU算法进行淘汰

allkeys-random:从所有key中随机淘汰数据

volatile-random:从设置了过期时间的key中随机淘汰

volatile-ttl:在设置了过期时间的key中,根据key的过期时间进行淘汰,越早过期的越优先被淘汰

当使用volatile-lru、volatile-random、volatile-ttl这三种策略时,如果没有key可以被淘汰,则和noeviction一样返回错误

如何获取及设置内存淘汰策略

获取当前内存淘汰策略:

127.0.0.1:6379> config get maxmemory-policy

通过配置文件设置淘汰策略(修改redis.conf文件):

maxmemory-policy allkeys-lru

通过命令修改淘汰策略:

127.0.0.1:6379> config set maxmemory-policy allkeys-lru`

面试官:Redis 内存数据满了,会宕机吗?相关推荐

  1. Redis内存数据满了导致宕机

    edis 数据库内存数据满了,会宕机吗?答案是:不会让他出现存满的情况,在使用Redis的时候我们要配置Redis能使用的最大的内存大小,存到一定容量的时候还有Redis的内存淘汰策略呢,还有LRU算 ...

  2. 我:Redis内存数据满了导致宕机。CTO:你太无知了....一脸懵

    热文推荐: 尘埃落定!清华才子王垠加入华为职级22,前阿里P10赵海平加入字节跳动,职级或为4+ 百度网盘"破解版",Pandownload开发者被抓 作者:千山qiansan j ...

  3. Redis 内存数据满了,会宕机吗?

    Redis 数据库内存数据满了,会宕机吗? 答案是:不会让它出现存满的情况,在使用Redis的时候我们要配置Redis能使用的最大的内存大小,存到一定容量的时候还有Redis的内存淘汰策略呢,还有LR ...

  4. Redis 日志篇:无畏宕机实现高可用的杀手锏

    " 特立独行是对的,融入圈子也是对的,重点是要想清楚自己向往怎样的生活,为此愿意付出怎样的代价. " 我们通常将 Redis 作为缓存使用,提高读取响应性能,一旦 Redis 宕机 ...

  5. Redis 日志篇:无畏宕机快速恢复的杀手锏

    " 特立独行是对的,融入圈子也是对的,重点是要想清楚自己向往怎样的生活,为此愿意付出怎样的代价. " 我们通常将 Redis 作为缓存使用,提高读取响应性能,一旦 Redis 宕机 ...

  6. 阿里面试官Redis把我问到哑口无言…

    Redis在国内各大公司都很热门,比如新浪.阿里.腾讯.百度.美团.小米等.Redis也是大厂面试最爱问的,尤其是Redis客户端.Redis高级功能.Redis持久化和开发运维常用问题探讨.Redi ...

  7. 【227期】面试官:MySQL 数据查询太多会 OOM 吗?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  8. Redis的KEYS命令引起宕机事件

    摘要: 使用 Redis 的开发者必看,吸取教训啊! 原文:Redis 的 KEYS 命令引起 RDS 数据库雪崩,RDS 发生两次宕机,造成几百万的资金损失 作者:陈浩翔 Fundebug经授权转载 ...

  9. 清理apache共享内存引起的oracle宕机

    我的平台是redhat as 3 ,oracle 9204. 其他应用是apache,resin等. 因为以前发现apache运行时间长以后会出现共享内存不足的错误,具体错误信息如下: [Fri Ap ...

最新文章

  1. 计算机应用a级考试,四川省职称计算机应用能力考试A级模拟题
  2. (十三) 构建dubbo分布式平台-dubbo管控台安装
  3. 电子科大64年来首提Nature封面,邓旭团队为超疏水表面披上「铠甲」
  4. 调整代码生成工具Database2Sharp的Winform界面生成,使其易于列表工具栏的使用。...
  5. CodeForces - 1168B Good Triple(思维+暴力)
  6. linux查看redis索引,linux的redis操作命令
  7. Linux 常用测试命令
  8. Sharepoint 2010 根据用户权限隐藏Ribbon菜单
  9. STM32之CAN总线原理
  10. 科技与我:在数字时代成长
  11. php 判断用户是否刷新,ajax php 实现无刷新用户检查是否存在
  12. 人工智能发展史_人工智能发展史:4张图看尽AI重大里程碑
  13. iOS_03_关键字、标识符、注释
  14. C语言中bzero函数
  15. ios崩溃日志收集_漫谈iOS Crash收集框架
  16. LiveData的使用和原理
  17. oracle数据库字符集子集与超集对应关系表表
  18. 资料 | 20个必不可少的Python库
  19. 10个你未必知道的CSS技巧与14种cssdiv中基本滤镜介绍
  20. AMD发布7nm服务器芯片「米兰」:Zen 3架构,IPC提升19%,最高64核

热门文章

  1. .NET Regular Expressions
  2. 转JS总结1--(CSS书写规范和正则表达式)
  3. 话里话外:浅谈国企绩效考核问题(二)
  4. 动态路由协议(RIP)
  5. 初步解决博客园代码高亮的一个方案
  6. 《Python编程快速上手 让繁琐工作自动化》pdf
  7. Linux 环境变量 $PATH
  8. 向linux内核版本号添加字符/为何有时会自动添加“+”号
  9. php 怎么实现收藏功能,php收藏功能如何实现
  10. python将argv作为参数_在jupyter / ipython notebook中将命令行参数传递给argv