Redis的8种内存淘汰机制
创始人
2024-04-07 12:25:25

背景:

  • Redis 是个基于内存的缓存数据库,既然是基于内存的,那肯定就会有存满的时候,再有新的数据就存不进去了。

  • 此时 Redis 会执行已经定义好的一些淘汰策略,本文大概讲一下 Redis 的 8 种数据淘汰策略。

1.简介

8种内存淘汰策略:

当 Redis 达到最大内存限制时,Redis会确切地使用配置好的最大内存策略指令来执行。相关策略如下:

1.noeviction(默认策略): 不会删除任何数据,拒绝所有写入操作并返回客户端错误消息(error)OOM command not allowed when used memory,此时 Redis 只响应删和读操作;

2.allkeys-lru 从所有 key 中使用 LRU 算法进行淘汰(LRU 算法:最近最少使用算法);

3.allkeys-lfu 从所有 key 中使用 LFU 算法进行淘汰(LFU 算法:最不常用算法,根据使用频率计算,4.0 版本新增);

4.volatile-lru 从设置了过期时间的 key 中使用 LRU 算法进行淘汰;

5.volatile-lfu 从设置了过期时间的 key 中使用 LFU 算法进行淘汰;

6.allkeys-random 从所有 key 中随机淘汰数据;

7.volatile-random 从设置了过期时间的 key 中随机淘汰数据;

8.volatile-ttl 在设置了过期时间的key中,淘汰过期时间剩余最短的。

注意: 当使用 volatile-lru、volatile-lfu、volatile-random、volatile-ttl 这四种淘汰策略时,如果没有 key 可以淘汰,则和 neoviction 一样返回错误。


2.如何选择使用哪种淘汰策略

​ 根据应用程序的访问模式,选择正确的淘汰策略很重要,但是你可以在程序运行时重新配置策略,并使用 Redis 的 info 命令 输出来监控缓存未命中和命中的数量,以调整设置。

  • keyspace_hits:缓存命中的次数
  • keyspace_misses:没有命中的次数
  • 缓存命中率 = keyspace_hits / (keyspace_hits + keyspace_misses)

一般根据经验来说:

  • 使用 allkeys-lru 策略场景:

    1.当你期望元素的子集将比其他元素更频繁地被访问时,比如幂律分布,20%的数据占有80%的使用次数;

    2.当你不确定使用哪种策略时。

  • 使用 allkeys-random 策略场景:

    1.当你有一个循环访问,其中所有 key 进行会被连续地访问;

    2.当你希望所有 key 的分布比较均匀。

  • 使用 volatile-ttl 策略场景:

    1.当你大部分缓存都设有不同的 ttl 值,向 Redis 提供过期候选的提示时。

注意: 给 key 设置过期时间会占用内存,因此使用 allkeys-lru 这样的策略更节省内存,因为在内存压力下不需要过期配置就可以收回密钥。


3.查询、设置内存淘汰策略

1)查询当前内存淘汰策略

127.0.0.1:6379> config get maxmemory-policy

2)获取Redis能使用的最大内存大小

127.0.0.1> config get maxmemory

说明:

  • 如果不设置最大内存大小或设置最大内存大小为 0,

  • 在 64 为操作系统下不设置内存大小,

  • 在 32 为操作系统下最多使用 3GB 内存。

    32 位的机器最大只支持 4GB 的内存,而系统本身就需要一定的内存资源来支持运行,所以 32 位机器默认限制最大 3GB 的可用内存。

3)设置淘汰策略

方法一:通过配置文件设置淘汰策略(修改 redis.conf 文件):

maxmemory-policy allkeys-lru

方法二:通过命令修改淘汰策略(临时生效,重启恢复):

127.0.0.1:6379> config set maxmemory-policy allkeys-lru

4)设置 Redis 最大占用内存大小

设置 Redis 最大占用内存大小为 100M(临时生效,重启恢复):

127.0.0.1:6379> config set maxmemory 100mb

整理完毕,完结撒花~





参考地址:

1.官方文档,https://redis.io/docs/reference/eviction/

2.Redis学习(二)原理篇,https://blog.csdn.net/qq_33204709/article/details/122326901

3.Redis 6种淘汰机制,看看你知道哪些?,https://blog.csdn.net/qq_42914528/article/details/126151403

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...