redis内存淘汰策略

1. redis内存淘汰策略

复制代码
日常常用:allkeys-lru:在键空间中移除最近最少使用的key。

1.1 为什么需要使用redis内存淘汰策略?

复制代码
因为我们服务器中的内存是有限的,不会无限多,所以需要对一些不常用的key进行内存清理.

1.2 redis内存淘汰策略有哪些?

复制代码
redis默认淘汰策略noeviction,不淘汰任何数据,内存满了会报错.

-noeviction:不进行任何数据淘汰,当内存不足时,对写命令返回错误。
-allkeys-lru:在键空间中移除最近最少使用的key(Least Recently Used),适用于所有key。
-volatile-lru:在设置了过期时间的key中移除最近最少使用的key。
-allkeys-random:随机移除所有key中的一个。
-volatile-random:随机移除设置了过期时间的key中的一个。
-volatile-ttl:移除即将到期的key中最早到期的一个。
-volatile-lfu:在设置了过期时间的key中移除最不经常使用(Least Frequently Used)的一个。
-allkeys-lfu:在键空间中移除最不经常使用的key。

1.3 LRU和LFU的区别?

LRU:Least Recently Used,最近最少使用,用当前访问时间减去最后一次访问时间,这个值越大则淘汰优先级最高。

LFU:Least Frequently Used,最少频率使用,会统计每个key的访问频率,值越小淘汰优先级越高。

2. 一些常用例子

2.1 假如数据库中有1000w条数据,但是内存只需要保存20w条数据,该选择那种淘汰策略保存都是热点数据?

复制代码
-allkeys-lru:在键空间中移除最近最少使用的key(Least Recently Used),适用于所有key。留下来的都是热点数据。

2.2 redis内存用完了会怎么样?

复制代码
redis默认淘汰策略noeviction,不淘汰任何数据,内存满了会报错.
相关推荐
YDS8294 小时前
黑马点评 —— 分布式锁详解加源码剖析
java·spring boot·redis·分布式
ZTLJQ4 小时前
数据的基石:Python中关系型数据库完全解析
开发语言·数据库·python
升鲜宝供应链及收银系统源代码服务4 小时前
《IntelliJ + Claude Code + Gemini + ChatGPT 实战配置手册升鲜宝》
java·前端·数据库·chatgpt·供应链系统·生鲜配送
跟着珅聪学java5 小时前
js编写中文转unicode 教程
前端·javascript·数据库
小江的记录本5 小时前
【Redis】Redis全方位知识体系(附《Redis常用命令速查表(完整版)》)
java·数据库·redis·后端·python·spring·缓存
还是做不到嘛\.5 小时前
Dvwa靶场-SQL Injection
数据库·sql·web安全
楼田莉子6 小时前
MySQL数据库:MySQL的数据类型
数据库·学习·mysql
2401_879693876 小时前
数据分析与科学计算
jvm·数据库·python
LJianK16 小时前
java封装
java·前端·数据库
知识分享小能手7 小时前
MongoDB入门学习教程,从入门到精通,MongoDB查询(4)
数据库·学习·mongodb