redis 内存满了怎么办?

redis 内存满了怎么办?

  • 不考虑键过期,就把 redis 当数据库用,而不是缓存
  • 不考虑持久化不持久化问题,因为与题目无关

我想知道的是,一个机器内存是 8 GB,硬盘是 1TB,要存入 redis 中的数据量有 100 GB,这个时候当 redis 把内存用满的时候会出现什么情况?

  • 拒绝提供服务
  • 把部分数据存到硬盘,需要查询的时候,去读硬盘获取

请问是哪种?

阅读 3.4k
3 个回答

看具体配置,默认是会拒绝再有申请新内存的请求,但读取、删除这类的请求正常执行。(这里的默认只原生版本,不包括云厂商提供的云 Redis 服务 —— 它们的默认配置是啥要去看它们自己的文档)

Redis 写硬盘是为了持久化,好在断电、重启等情况下还能恢复过来,并不是为了多级存储。

具体的可以自己去了解 “Redis 内存淘汰策略”。

《Redis 官方文档:FAQ - What happens if Redis runs out of memory?》
《Redis 官方文档:Topic - LRU Cache》

image.png
来源
如果你自己设置了maxmemory,那么会根据你的淘汰策略报错或者淘汰一部分key。没有的话通常支持swap/虚拟内存的系统会使用swap,但这时候性能很差。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏