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

相关推荐
草莓熊Lotso6 小时前
红黑树从入门到进阶:4 条规则如何筑牢 O (logN) 效率根基?
服务器·开发语言·c++·人工智能·经验分享·笔记·后端
0wioiw07 小时前
跨网络互联技术(Nginx反向代理)
服务器·网络·nginx
蜜汁小强7 小时前
Github 账号与登录 2025
github
minji...7 小时前
Linux 进程概念 (三) (进程状态,僵尸进程,孤儿进程,进程优先级)
linux·运维·服务器
Sahadev_8 小时前
GitHub 一周热门项目速览
github
CoderJia程序员甲8 小时前
GitHub 热榜项目 - 日榜(2025-11-24)
ai·开源·llm·github·ai教程
qq_4798754314 小时前
X-Macros(1)
linux·服务器·windows
4***V20215 小时前
GitLab Pages配置
git·gitlab·github
jun_bai16 小时前
python写的文件备份网盘程序
运维·服务器·网络
m***567216 小时前
Win10下安装 Redis
数据库·redis·缓存