面试官:Redis 内存数据满了,会宕机吗?
背景
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 内存数据满了,会宕机吗?相关推荐
- Redis内存数据满了导致宕机
edis 数据库内存数据满了,会宕机吗?答案是:不会让他出现存满的情况,在使用Redis的时候我们要配置Redis能使用的最大的内存大小,存到一定容量的时候还有Redis的内存淘汰策略呢,还有LRU算 ...
- 我:Redis内存数据满了导致宕机。CTO:你太无知了....一脸懵
热文推荐: 尘埃落定!清华才子王垠加入华为职级22,前阿里P10赵海平加入字节跳动,职级或为4+ 百度网盘"破解版",Pandownload开发者被抓 作者:千山qiansan j ...
- Redis 内存数据满了,会宕机吗?
Redis 数据库内存数据满了,会宕机吗? 答案是:不会让它出现存满的情况,在使用Redis的时候我们要配置Redis能使用的最大的内存大小,存到一定容量的时候还有Redis的内存淘汰策略呢,还有LR ...
- Redis 日志篇:无畏宕机实现高可用的杀手锏
" 特立独行是对的,融入圈子也是对的,重点是要想清楚自己向往怎样的生活,为此愿意付出怎样的代价. " 我们通常将 Redis 作为缓存使用,提高读取响应性能,一旦 Redis 宕机 ...
- Redis 日志篇:无畏宕机快速恢复的杀手锏
" 特立独行是对的,融入圈子也是对的,重点是要想清楚自己向往怎样的生活,为此愿意付出怎样的代价. " 我们通常将 Redis 作为缓存使用,提高读取响应性能,一旦 Redis 宕机 ...
- 阿里面试官Redis把我问到哑口无言…
Redis在国内各大公司都很热门,比如新浪.阿里.腾讯.百度.美团.小米等.Redis也是大厂面试最爱问的,尤其是Redis客户端.Redis高级功能.Redis持久化和开发运维常用问题探讨.Redi ...
- 【227期】面试官:MySQL 数据查询太多会 OOM 吗?
点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...
- Redis的KEYS命令引起宕机事件
摘要: 使用 Redis 的开发者必看,吸取教训啊! 原文:Redis 的 KEYS 命令引起 RDS 数据库雪崩,RDS 发生两次宕机,造成几百万的资金损失 作者:陈浩翔 Fundebug经授权转载 ...
- 清理apache共享内存引起的oracle宕机
我的平台是redhat as 3 ,oracle 9204. 其他应用是apache,resin等. 因为以前发现apache运行时间长以后会出现共享内存不足的错误,具体错误信息如下: [Fri Ap ...
最新文章
- 计算机应用a级考试,四川省职称计算机应用能力考试A级模拟题
- (十三) 构建dubbo分布式平台-dubbo管控台安装
- 电子科大64年来首提Nature封面,邓旭团队为超疏水表面披上「铠甲」
- 调整代码生成工具Database2Sharp的Winform界面生成,使其易于列表工具栏的使用。...
- CodeForces - 1168B Good Triple(思维+暴力)
- linux查看redis索引,linux的redis操作命令
- Linux 常用测试命令
- Sharepoint 2010 根据用户权限隐藏Ribbon菜单
- STM32之CAN总线原理
- 科技与我:在数字时代成长
- php 判断用户是否刷新,ajax php 实现无刷新用户检查是否存在
- 人工智能发展史_人工智能发展史:4张图看尽AI重大里程碑
- iOS_03_关键字、标识符、注释
- C语言中bzero函数
- ios崩溃日志收集_漫谈iOS Crash收集框架
- LiveData的使用和原理
- oracle数据库字符集子集与超集对应关系表表
- 资料 | 20个必不可少的Python库
- 10个你未必知道的CSS技巧与14种cssdiv中基本滤镜介绍
- AMD发布7nm服务器芯片「米兰」:Zen 3架构,IPC提升19%,最高64核
热门文章
- .NET Regular Expressions
- 转JS总结1--(CSS书写规范和正则表达式)
- 话里话外:浅谈国企绩效考核问题(二)
- 动态路由协议(RIP)
- 初步解决博客园代码高亮的一个方案
- 《Python编程快速上手 让繁琐工作自动化》pdf
- Linux 环境变量 $PATH
- 向linux内核版本号添加字符/为何有时会自动添加“+”号
- php 怎么实现收藏功能,php收藏功能如何实现
- python将argv作为参数_在jupyter / ipython notebook中将命令行参数传递给argv