ToB企服应用市场:ToB评测及商务社交产业平台

标题: 阿里口试让聊一聊Redis 的内存淘汰(驱逐)策略 [打印本页]

作者: 前进之路    时间: 2024-9-23 14:43
标题: 阿里口试让聊一聊Redis 的内存淘汰(驱逐)策略
大家好,我是 V 哥,粉丝小A口试阿里,说被问到 Redis 的内存淘汰策略的问题,整理这个笔记给他参考,也分享给大家,如果你遇到这个问题,会怎么答复呢?
Redis 的内存淘汰策略是指当Redis的内存使用量达到设定的上限时,决定哪些数据应该被移除以便为新数据腾出空间的规则。Redis 提供了多种内存淘汰策略,可以通过配置文件中的 maxmemory-policy 指令来设置。以下是 Redis 支持的主要内存淘汰策略:
以上是8种差异的淘汰策略,选择哪种淘汰策略取决于具体的使用场景和业务需求。比方,如果你盼望 Redis 作为缓存使用,而且缓存的数据大多是临时性的,那么可能会选择 allkeys-lru 或 volatile-lru。如果你的应用中有明白的热点数据,可能会选择 allkeys-lfu 或 volatile-lfu 来确保热点数据不会被轻易淘汰。
Redis 还提供了一些工具和命令来资助监控和优化内存使用,比方 INFO memory 命令可以查看内存使用情况,CONFIG SET maxmemory 可以动态调整内存上限。
在 Redis 4.0 版本后引入了 MEMORY 命令,可以更细致地管理和分析内存使用情况。比方,MEMORY USAGE 可以估算键值对的内存使用量,MEMORY STATS 可以显示内存使用的详细信息。
Redis 的内存淘汰是在后台异步进行的,因此纵然达到了内存上限,也不会立即淘汰数据,而是在新的写入操纵发生时根据配置的策略进行淘汰。
noeviction

noeviction 是 Redis 默认的内存淘汰策略。当 Redis 的内存使用量达到 maxmemory 配置的限制时,如果尝试执行可能导致更多内存使用的命令(如 SET、LPUSH、SADD 等),Redis 将返回错误,而不是淘汰任何现有的键值对。
在以下应用场景中可以使用

怎么用

  1.    maxmemory-policy noeviction
复制代码
  1.    127.0.0.1:6379> CONFIG SET maxmemory-policy noeviction
复制代码
  1.    redis-server --maxmemory-policy noeviction
复制代码
小结一下

敲黑板啦,注意事项

allkeys-lru

allkeys-lru 是 Redis 的一种内存淘汰策略,全称为 "all keys least recently used"。这种策略会在所有键中,包罗那些没有设置逾期时间的键,基于最近最少使用算法(LRU)来淘汰数据。
得当的应用场景

怎么用

  1. maxmemory-policy allkeys-lru
复制代码
  1.    127.0.0.1:6379> CONFIG SET maxmemory-policy allkeys-lru
复制代码
  1.    redis-server --maxmemory-policy allkeys-lru
复制代码
小结一下

敲黑板:注意的地方

allkeys-lfu

allkeys-lfu 是 Redis 的一种内存淘汰策略,全称为 "all keys least frequently used"。这种策略会在所有键中,包罗那些没有设置逾期时间的键,基于最少频率使用算法(LFU)来淘汰数据。
得当用的应用场景

怎么用

  1.    maxmemory-policy allkeys-lfu
复制代码
  1.    127.0.0.1:6379> CONFIG SET maxmemory-policy allkeys-lfu
复制代码
  1.    redis-server --maxmemory-policy allkeys-lfu
复制代码
小结一下

敲黑板:注意事项

volatile-lru

volatile-lru 是 Redis 的一种内存淘汰策略,全称为 "volatile keys least recently used"。这种策略仅针对设置了逾期时间的键,基于最近最少使用算法(LRU)来淘汰数据。
得当的应用场景

怎么用

  1.    maxmemory-policy volatile-lru
复制代码
  1.    127.0.0.1:6379> CONFIG SET maxmemory-policy volatile-lru
复制代码
  1.    redis-server --maxmemory-policy volatile-lru
复制代码
小结一下

duangduangduang 注意一下

volatile-lfu

volatile-lfu 是 Redis 的一种内存淘汰策略,全称为 "volatile keys least frequently used"。这种策略仅针对设置了逾期时间的键,基于最少频率使用算法(LFU)来淘汰数据。
得当的应用场景

怎么用

  1.    maxmemory-policy volatile-lfu
复制代码
  1.    127.0.0.1:6379> CONFIG SET maxmemory-policy volatile-lfu
复制代码
  1.    redis-server --maxmemory-policy volatile-lfu
复制代码
小结一下

注意 注意

volatile-random

volatile-random 是 Redis 的一种内存淘汰策略,全称为 "volatile keys random"。这种策略仅针对设置了逾期时间的键,随机淘汰数据。
得当的应用场景

怎么用

  1.    maxmemory-policy volatile-random
复制代码
  1.    127.0.0.1:6379> CONFIG SET maxmemory-policy volatile-random
复制代码
  1.    redis-server --maxmemory-policy volatile-random
复制代码
小结一下

注意

allkeys-random

allkeys-random 是 Redis 的一种内存淘汰策略,全称为 "all keys random"。这种策略会在所有键中,无论是否设置了逾期时间,随机淘汰数据。
得当的应用场景

怎么用

  1.    maxmemory-policy allkeys-random
复制代码
  1.    127.0.0.1:6379> CONFIG SET maxmemory-policy allkeys-random
复制代码
  1.    redis-server --maxmemory-policy allkeys-random
复制代码
小结一下

注意一下

volatile-ttl

volatile-ttl 是 Redis 的一种内存淘汰策略,全称为 "volatile keys with the smallest Time To Live"。这种策略仅针对设置了逾期时间的键,淘汰那些剩余生存时间(TTL)最短的键。
得当的应用场景

怎么用

  1.    maxmemory-policy volatile-ttl
复制代码
  1.    127.0.0.1:6379> CONFIG SET maxmemory-policy volatile-ttl
复制代码
  1.    redis-server --maxmemory-policy volatile-ttl
复制代码
小结一下

要注意的情况

最后

以上是 V 哥整理的笔记,分享给你,欢迎关注威哥爱编程,专注技术学习与发展,绝不躺平。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4