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,不淘汰任何数据,内存满了会报错.
相关推荐
2601_9620715710 分钟前
基于DataX迁移MySQL到OceanBase集群
数据库·mysql·oceanbase
爱和冰阔落12 分钟前
【Linux】多线程打印为什么会乱?pthread 创建、等待、退出、取消与分离全实战
linux·运维·c++·redis
初願致夕霞15 分钟前
五种IO模型(详解非阻塞IO与多路转接)
linux·前端·网络·数据库·tcp/ip
风哥2号27 分钟前
华为高斯数据库恢复工具FGOGDU(FGEDU openGauss DUL)
数据库·opengauss·华为高斯
小蒜学长35 分钟前
springboot党建云课堂学习与管理系统(代码+数据库+LW)
java·数据库·spring boot·后端·学习
2601_9621803335 分钟前
FlinkCDC 实现 MySQL 数据变更实时同步
数据库·mysql
2601_9621896039 分钟前
深入浅出MySQL:概述与体系结构解析
数据库·mysql
Gain_chance1 小时前
大数据毕业设计实战|Data Insight Platform:用 FastAPI + ClickHouse 打造低门槛全链路数据洞察平台
大数据·数据库·clickhouse·毕业设计·fastapi
harmony&2 小时前
ETCD 存储系统实战:从单节点部署到 Kubernetes 高可用集群
数据库·kubernetes·etcd
2601_962066492 小时前
【玩转全栈】----Django模板的继承
数据库·django·sqlite