Redis 缓存淘汰策略

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,倚天版 1GB 1个月
简介: Redis 缓存淘汰策略

在Redis中,内存的大小是有限的,所以为了防止内存饱和,需要实现某种键淘汰策略。主要有两种方法,一种是当Redis内存不足时所采用的内存释放策略。另一种是对过期key进行删除的策略,也可以在某种程度上释放内存。

Redis采用的默认内存释放策略是noeviction-不删除,达到最大内存时,如需更多内存(存入数据),则操作报错;默认的过期key删除策略则是惰性删除+定期删除的方案;

默认在linux系统下的redis.conf文件下

Redis的默认策略为noeviction,支持的策略有8种:

volatile-lru

只对设置了expire过期时间的key生效,优先删除最近最少使用(least recently used ,LRU) 的 key,直到有可用的内存,如果没有可删除的key并且内尺还是不够,则报错。

allkeys-lru

所有key通用;优先删除最近最少使用(least recently used ,LRU)的key,直到有可用的内存,如果没有可删除的key并且内尺还是不够,则报错。

volatile-lfu

Redis4.0新增的策略。只对设置了expire过期时间的key生效,优先删除最不常用(least frequently used ,LFU) 的 key,直到有可用的内存,如果没有可删除的key并且内尺还是不够,则报错。

allkeys-lfu

Redis4.0新增的策略。所有key通用;优先删除最不常用(least frequently used , LFU)的key,直到有可用的内存,如果没有可删除的key并且内尺还是不够,则报错。

volatile-random

只对设置了expire过期时间的key生效,随机删除一部分key,直到有可用的内存,如果没有可删除的key并且内尺还是不够,则报错。

allkeys-random

所有key通用,随机删除一部分key,直到有可用的内存,如果没有可删除的key并且内尺还是不够,则报错。

volatile-ttl

只对设置了expire过期时间的key生效,优先删除剩余时间(time to live,TTL) 最短的key,直到有可用的内存,如果没有可删除的key并且内尺还是不够,则报错。

noeviction

默认策略,不删除任何key,在进行写操作时返回错误信息

总结

对Redis缓存已满,删除淘汰哪些数据?

1. 有设置过期时间数据

  • 过期时间快到的数据,优先删除
  • LRU : 最近最少被使用,优先删除
  • LFU : 使用次数最少的,优先删除
  • Random : 随机删除

2. 全部所有数据

  • LRU : 最近最少被使用,优先删除
  • LFU : 使用次数最少的,优先删除
  • Random : 随机删除

3. 默认值: 不删除

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
18天前
|
缓存 NoSQL 关系型数据库
(八)漫谈分布式之缓存篇:唠唠老生常谈的MySQL与Redis数据一致性问题!
本文来聊一个跟实际工作挂钩的老生常谈的问题:分布式系统中的缓存一致性。
72 10
|
12天前
|
存储 监控 NoSQL
揭秘Redis慢查询:这个工具将彻底改变你的性能优化策略!
【8月更文挑战第8天】在互联网应用中,数据库性能常成瓶颈。Redis作为高速内存数据库亦可能遭遇慢查询问题。本文探讨慢查询成因与解决方法。首先定义慢查询及其影响因素,随后介绍Redis内置的慢查询日志功能,通过配置`slowlog-log-slower-than`与`slowlog-max-len`来监控执行时间过长的命令。利用`SLOWLOG get`命令分析日志,定位性能瓶颈所在。以`LRANGE`命令为例,提出数据结构调整、使用流水线、限制返回元素数量、异步执行及优化内存使用等策略。最终实现Redis性能提升,确保应用流畅运行。性能优化需持续监控、分析与调整。
30 1
|
4天前
|
存储 缓存 NoSQL
基于SpringBoot+Redis解决缓存与数据库一致性、缓存穿透、缓存雪崩、缓存击穿问题
这篇文章讨论了在使用SpringBoot和Redis时如何解决缓存与数据库一致性问题、缓存穿透、缓存雪崩和缓存击穿问题,并提供了相应的解决策略和示例代码。
15 0
|
4天前
|
缓存 NoSQL Ubuntu
如何在 Ubuntu 14.04 上配置 Redis 缓存以加速 WordPress
如何在 Ubuntu 14.04 上配置 Redis 缓存以加速 WordPress
10 0
|
11天前
|
缓存 监控 Go
[go 面试] 缓存策略与应对数据库压力的良方
[go 面试] 缓存策略与应对数据库压力的良方
|
存储 缓存 NoSQL
Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存|学习笔记
快速学习 Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存
453 0
Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存|学习笔记
|
缓存 NoSQL 安全
6.0Spring Boot 2.0实战 Redis 分布式缓存6.0|学习笔记
快速学习6.0Spring Boot 2.0实战 Redis 分布式缓存6.0。
302 0
6.0Spring Boot 2.0实战 Redis 分布式缓存6.0|学习笔记
|
缓存 NoSQL Redis
首页数据显示-添加 redis 缓存(3)| 学习笔记
快速学习 首页数据显示-添加 redis 缓存(3)
132 0
首页数据显示-添加 redis 缓存(3)| 学习笔记
|
缓存 NoSQL Java
首页数据显示-添加 redis 缓存(1) | 学习笔记
快速学习 首页数据显示-添加 redis 缓存(1)
214 0
首页数据显示-添加 redis 缓存(1) | 学习笔记
|
存储 缓存 NoSQL
Redis 缓存|学习笔记
快速学习Redis 缓存
96 0