讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在Redis中为不同前缀的数据指定不同的淘汰优先级?

轻伟小哥_4985

轻伟小哥_4985

发布时间:2026-10-28 06:35:23

|

690人浏览过

|

来源于php中文网

原创

Redis不支持按key前缀设置淘汰策略,因其maxmemory-policy是实例级全局配置,仅依据key是否过期、TTL剩余时长或访问频次等底层属性决策,完全不识别前缀语义;volatile-ttl策略配合差异化EXPIRE设置可实现前缀级“软优先级”,即让低优先级key设置更短TTL,使其在采样中更易被淘汰。

如何在redis中为不同前缀的数据指定不同的淘汰优先级?

Redis 本身不支持按 key 前缀设置淘汰优先级,所有淘汰策略都是全局生效的;但你可以通过 volatile-ttl 策略 + 差异化 EXPIRE 设置,让带前缀的 key 在内存紧张时更大概率被优先淘汰。

为什么不能直接按前缀配置淘汰策略

Redis 的 maxmemory-policy 是实例级配置,对所有 database、所有 key 一视同仁。即使你用 user:123、cache:recommend、tmp:session 这样的前缀组织数据,Redis 也完全感知不到“前缀语义”。它只认 key 是否带过期时间、TTL 剩余多少、最近是否被访问等底层属性。

常见错误现象包括:以为在 redis.conf 里加个 prefix-policy user:* volatile-lru 就能生效 —— 实际上这个配置项根本不存在,Redis 启动会报错或静默忽略。

用 volatile-ttl + TTL 分级实现前缀级“软优先级”

这是目前最可行、线上验证过的间接方案。核心逻辑是:让低优先级前缀的 key 拥有明显更短的 TTL,配合 volatile-ttl 策略,在采样中更容易被选中淘汰。

redis-tools
redis-tools

按类别查找Redis命令、检测服务器连接、监控键数量和内存占用,支持离线速查表。

下载
  • 必须启用 volatile-ttl 策略:CONFIG SET maxmemory-policy volatile-ttl
  • 所有参与“优先级分级”的 key 必须显式设置过期时间,否则不进入候选池
  • TTL 差异要足够大:比如 tmp: 类设 EXPIRE key 60,cache: 类设 EXPIRE key 1800,user: 类设 EXPIRE key 3600;避免只差几十秒(如 300 vs 310),实际淘汰倾向几乎无差别
  • 注意 PTTL 返回值边界:-2 表示 key 不存在,-1 表示未设过期 —— 监控脚本里误把 -1 当成“即将淘汰”,会导致告警误报

容易踩的坑:TTL 设置不当反而害了核心数据

很多团队上线后发现用户登录态(session:user:xxx)比临时计算结果(tmp:calc:xxx)还先被淘汰,原因往往是:

  • 误给高优先级 key 设置了短 TTL,比如 EXPIRE session:user:123 300,而 tmp:calc:xxx 却设了 600 —— 结果 volatile-ttl 反而保护了临时数据
  • 混用了策略:全局开了 allkeys-lru,又试图靠 TTL 控制优先级 —— 此时 TTL 完全不影响淘汰逻辑
  • key 总量太少:整个实例只有 4 个带过期的 key,而采样数默认是 5,导致每次采样都覆盖全部,TTL 差异失去意义
  • 忘了 maxmemory 没设:Redis 默认不限内存,OOM Killer 直接干掉进程,根本轮不到淘汰策略介入

替代方案:多实例比单实例前缀隔离更可靠

如果业务维度隔离要求极高(比如金融类缓存和日志类缓存绝对不能互相影响),硬靠 TTL 分级风险太大。更稳妥的做法是:

  • 为不同优先级业务部署独立 Redis 实例,各自配 maxmemory 和策略
  • 用代理层(如 Twemproxy、Codis 或自研路由)按 key 前缀分发到不同实例
  • 避免使用 SELECT 切库来模拟“多 DB 隔离”—— 因为所有 DB 共享同一内存池,淘汰仍是全局的

真正难的不是写几行 EXPIRE,而是判断哪些 key 能容忍短 TTL、哪些必须长驻、以及当采样机制遇上小数据集时,你的“优先级设计”是否还成立。

热门AI工具

更多
PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

超级麦吉

一款通过数字员工协作完成调研、数据分析与文档制作的AI办公平台。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4689

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4235

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

7992

2024.04.02

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

663

2024.04.07

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

776

2024.04.07

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

8062

2024.04.07

redis缓存一般存些什么数据
redis缓存一般存些什么数据

redis缓存中存储的数据类型包括:字符串、哈希、列表、集合、有序集合、位图、地理空间数据和hyperloglog。这些数据类型适用于存储各种数据,从简单信息到复杂对象和地理位置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1180

2024.04.07

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1216

2024.04.07

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn