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 命令来查看实际使用情况。

相关推荐
twc8291 分钟前
大模型生成 QA Pairs 提升 RAG 应用测试效率的实践
服务器·数据库·人工智能·windows·rag·大模型测试
lay_liu5 分钟前
Linux安装redis
linux·运维·redis
w-w0w-w1 小时前
Unix网络编程
服务器·网络·unix
量子位2 小时前
字节版龙虾架构火爆GitHub!开源获35k+ Star,内置Skill全家桶,原生适配飞书
github·ai编程
lay_liu2 小时前
ubuntu 安装 Redis
linux·redis·ubuntu
肠胃炎2 小时前
挂载方式部署项目
服务器·前端·nginx
mldlds3 小时前
windows手动配置IP地址与DNS服务器以及netsh端口转发
服务器·windows·tcp/ip
一直都在5723 小时前
深入理解 synchronized:到底锁的是谁?
运维·服务器
RisunJan4 小时前
Linux命令-mkbootdisk(可建立目前系统的启动盘)
linux·运维·服务器