Carry の Blog Carry の Blog
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL

  • Redis

    • 安装配置
    • Redis 集群部署
    • redis大key分析
    • Redis手动进行主从切换
    • Redis集群添加节点之后数据重新均匀分配
    • Redis槽位slot解读
    • redis新增节点slot迁移报错故障修复
    • Redis集群的创建、剔除节点与新增节点操作过程
    • redis抓包分析脚本
    • Redis配置文件解读
    • redis cluster压测
    • redis慢查询告警脚本
    • Redis 的可用内存过高时的自动驱逐 key 策略详解
      • 引言
      • Redis 的内存管理机制
      • 驱逐策略详解
        • 1. noeviction
        • 2. allkeys-lru
        • 3. volatile-lru
        • 4. allkeys-random
        • 5. volatile-random
        • 6. volatile-ttl
      • 配置示例
      • 监控与调优
  • Keydb

  • TiDB

  • MongoDB

  • Elasticsearch

  • Kafka

  • victoriametrics

  • BigData

  • Sqlserver

  • 数据库
  • Redis
Carry の Blog
2024-06-23
目录

Redis 的可用内存过高时的自动驱逐 key 策略详解原创

# Redis 的可用内存过高时的自动驱逐 key 策略详解

# 引言

Redis 是一个高性能的 key-value 存储,广泛应用于缓存、会话存储等场景。在使用 Redis 时,经常会遇到内存使用过高的问题。为了保证 Redis 的稳定运行,我们需要了解 Redis 如何在内存接近上限时自动驱逐 key 以释放内存。

# Redis 的内存管理机制

Redis 通过配置参数 maxmemory 来设置允许使用的最大内存量。当 Redis 的内存使用量接近 maxmemory 时,它会根据配置的驱逐策略自动删除部分 key 以释放内存。我们可以通过配置参数 maxmemory-policy 来指定驱逐策略。

# 驱逐策略详解

Redis 提供了多种驱逐策略,每种策略适用于不同的应用场景。以下是 Redis 的几种主要驱逐策略:

# 1. noeviction

当内存达到最大限制时,不再执行任何写操作,直接返回错误。适用于希望数据完全保留且可以容忍写入失败的场景。

# 2. allkeys-lru

在所有 key 中,使用 LRU(Least Recently Used)算法驱逐最近最少使用的 key。这是最常用的策略,适用于缓存场景。

# 3. volatile-lru

仅在设置了过期时间的 key 中,使用 LRU 算法驱逐最近最少使用的 key。适用于只希望驱逐设置了过期时间的 key 的场景。

# 4. allkeys-random

在所有 key 中,随机驱逐一些 key。适用于不希望使用 LRU 算法,且可以接受随机驱逐的场景。

# 5. volatile-random

仅在设置了过期时间的 key 中,随机驱逐一些 key。适用于只希望驱逐设置了过期时间的 key 且可以接受随机驱逐的场景。

# 6. volatile-ttl

仅在设置了过期时间的 key 中,优先驱逐剩余生存时间(TTL)最短的 key。适用于希望优先删除即将过期的 key 的场景。

# 配置示例

可以通过修改 Redis 配置文件或运行时使用 CONFIG SET 命令来配置 maxmemory 和 maxmemory-policy。以下是一个配置示例:

# 设置最大内存为 256MB
maxmemory 256mb

# 设置驱逐策略为 allkeys-lru
maxmemory-policy allkeys-lru
1
2
3
4
5

或者在运行时设置:

CONFIG SET maxmemory 256mb
CONFIG SET maxmemory-policy allkeys-lru
1
2

# 监控与调优

为了更好地管理 Redis 的内存使用,可以结合 Redis 提供的监控工具,如 INFO memory 命令,监控内存使用情况。同时,可以根据实际应用需求和内存使用情况,动态调整 maxmemory 和驱逐策略。

#Redis#内存管理
上次更新: 4/24/2025

← redis慢查询告警脚本 安装配置→

最近更新
01
tidb fast ddl
04-04
02
TiDB配置文件调优 原创
04-03
03
如何移除TiDB中的表分区 原创
04-03
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式