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

相关推荐
fthux15 小时前
装闭 RenoPit 源码解析(09):AnalysisEngine装修闭坑分析主流程
人工智能·ai·开源·github·open source·renopit
JackieDYH16 小时前
Git 与 GitHub 新电脑配置指南(从零开始)
git·github·工具·使用教程
波波00716 小时前
C# 15 重磅新特性: 带标签 break 与 continue:重新定义嵌套循环控制流
服务器·前端·c#
隔窗听雨眠19 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle
鲸采云SRM采购管理系统20 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
那年窗外下的雪.20 小时前
AIDC 学习日志 第 04 天 BGP Underlay 基础与路由选择
服务器·学习·php
0x5321 小时前
Java网络编程(二)
java·服务器·网络
果果燕21 小时前
C++学习笔记(三):类与对象拓展学习笔记
java·服务器·前端
小绫网络安全1 天前
Kali Linux渗透测试入门教程:从零搭建到实战攻防
linux·运维·服务器
天疆说1 天前
01 硬件选型与 llama.cpp 部署:4× RTX 5880 Ada 跑 DeepSeek-V4-Flash
java·redis·llama