Redis服务器的的内存是多大

配置文件中设置redis内存的参数:

该参数如果不设置或者设置为0,则redis默认的内存大小为:

32位下默认是3G

64位下不受限制

一般推荐Redis设置内存为最大物理内存的四分之三,也就是0.75

命令行设置config set maxmemory <内存大小,单位字节>,服务器重启失效

config get maxmemory获取当前内存大小

永久则需要设置maxmemory参数,maxmemory是bytes字节类型,注意转换

Redis 服务器的内存大小 不是固定的 ,它取决于你 部署 Redis 的服务器(物理机、虚拟机或容器)所分配的内存资源 ,以及 你对 Redis 的配置限制

简单来说:


一、Redis 本身不预设固定内存大小

Redis 是一个内存数据库,它把所有的数据都保存在 内存(RAM) 中以提供极高的读写性能。但它 不会自动占用所有可用内存,其使用的内存大小主要由以下因素决定:

  1. 你部署 Redis 的服务器总内存有多大

    • 比如你在一台 8GB 内存的云服务器 上运行 Redis,那么 Redis 最多只能用这 8GB 中的一部分(还要给操作系统和其他进程留空间)。
    • 如果你在一台 128GB 内存的服务器 上运行 Redis,那 Redis 可用的理论上限就高很多。
  2. Redis 配置参数:maxmemory

    • Redis 提供了一个配置项叫做 maxmemory,用于 限制 Redis 最多可以使用多少内存

    • 如果你在 redis.conf 文件中设置了:

      conf 复制代码
      maxmemory 2gb

      那么 Redis 就会 最多使用 2GB 的内存,超过后根据你的策略(比如 LRU)开始删除数据。

    • 如果 没有设置 maxmemory ,Redis 默认没有内存上限(即可以使用掉服务器所有可用内存),这在生产环境中是非常危险的,可能导致系统 OOM(Out Of Memory)被杀死。

  3. 实际使用内存大小

    • 你可以通过 Redis 命令查看当前 Redis 实例用了多少内存:

      bash 复制代码
      INFO memory

      其中关键字段是:

      • used_memory: Redis 当前使用的实际内存(单位字节)
      • used_memory_human: 可读格式,比如 "50MB"、"2GB"
      • maxmemory: 当前配置的最大内存限制(如果没有设置会显示 0)

      示例输出可能如下:

      复制代码
      used_memory:52428800
      used_memory_human:50.00M
      maxmemory:0
      maxmemory_human:0B
      maxmemory_policy:noeviction
      • 这里 maxmemory:0 表示未设置上限,Redis 可以一直用内存直到系统不允许。

二、如何查看你的 Redis 用了多少内存?

如果你已经有一个正在运行的 Redis 服务,可以通过以下方式查看它的内存使用情况:

方法一:使用 redis-cli 执行 INFO 命令
bash 复制代码
redis-cli INFO memory

关注以下几个字段:

  • used_memory: 已使用内存(字节)
  • used_memory_human: 可读形式(如 MB、GB)
  • maxmemory: 最大允许使用内存(如果为 0 表示无限制)
  • maxmemory_policy: 达到内存上限后的淘汰策略
方法二:使用 redis-cli 执行 MEMORY STATS(更详细)
bash 复制代码
redis-cli MEMORY STATS

会返回一系列内存使用相关的统计信息。


三、常见生产环境中的 Redis 内存配置建议

  • 一定要设置 maxmemory 不设置的话 Redis 可能会吃光服务器内存,引发系统崩溃。
  • 根据业务需求和服务器情况,合理设置 maxmemory,比如:
    • 如果服务器有 16GB,通常建议给 Redis 分配 4GB ~ 12GB (视其他服务而定),并通过 maxmemory 限制。
  • 设置合理的 淘汰策略(maxmemory-policy) ,比如:
    • volatile-lru:对设置了过期时间的 key 使用 LRU 淘汰
    • allkeys-lru:对所有 key 使用 LRU 淘汰(当内存满了时)
    • noeviction(默认):不淘汰数据,但写入新数据时报错(内存不足时)

四、总结回答

Redis 服务器的内存大小不是固定的,它依赖于你运行 Redis 的服务器本身有多少内存,以及你是否通过 maxmemory 参数限制了 Redis 能使用的内存。如果没有设置限制,Redis 可能会使用掉服务器的全部可用内存,这是不安全的。通常我们会为 Redis 设置一个合理的 maxmemory 值(比如几 GB 到几十 GB,视业务而定),并通过 INFO memory 命令来查看实际使用情况。

相关推荐
YuePeng16 小时前
写了五年注解的低代码框架,2.0 决定让你连注解都不用写了
github·产品
小白ai16 小时前
从"能 ping 通吗"到"为什么上不了网"——我写了一个网络故障诊断引擎
github
徐小夕18 小时前
jitword 协同文档3.2发布:打造浏览器中最强word编辑器
前端·架构·github
齐翊20 小时前
分享一个在 Claude Code 里 [同时] 用多个 ApiKey 的方法
程序员·github·agent
A_Lonely_Cat21 小时前
记一次 GitHub 幽灵协作者大清洗:强制重写 Git 历史与穿透 CDN 缓存实践
git·github
极光技术熊2 天前
Spring AI 从入门到精通:构建你的 AI 开发知识体系
后端·github
用户39483951075532 天前
怎么让我的 Agent 真正"懂"我?——关于记忆、经验学习与预测的一些真实体验
github
远航_2 天前
git submodule
前端·后端·github
fthux2 天前
如果你用 Mac,那你可能需要 Noti Shift
macos·开源·github
用户3074596982073 天前
Redis 延时队列详解
redis