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

相关推荐
乌恩大侠5 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
Mr.朱鹏5 小时前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
mengge.cloud5 小时前
存储技术基础小白教程
linux·运维·服务器·wpf·存储
tang777896 小时前
反爬虫场景下代理IP池的动态扩容与失效IP自动清理方案实现
linux·服务器·网络·爬虫代理·住宅代理ip
新时代牛马7 小时前
Linux 系统调用与IPC 完整篇:从syscall 入口、VDSO 到pipe/shm/futex 选型
linux·运维·服务器
小HANN9 小时前
Linux建站实战:CentOS7+LNMP 从零部署 ECShop 开源电商系统
linux·运维·服务器·经验分享
三8449 小时前
SSRF 从入门到实战:原理、危害与基础利用
服务器·网络安全·ssrf·#web安全
平原201811 小时前
GPT Image 2 / Nano Banana API成本拆解:$0.0081、84.7%与单张有效成本
linux·服务器·gpt
T1mzhou11 小时前
ARM64 Linux 6.10内核启动流程2-rootfs 怎么挂上
linux·服务器·前端
峰向AI11 小时前
学生党/打工人必备:AI自动把课程视频变成讲义
github