redis的淘汰策略

1、问题引入—— MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据(redis有哪些数据淘汰策略???)

说明:redis内存数据集大小上升到一定大小的时候,就会实行数据淘汰策略(回收策略)。
redis提供6种数据淘汰策略
1、volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。redis并不是保证取得所有数据集中最近最少使用的键值对,而只是随机挑选的几个键值对中的, 当内存达到限制的时候无法写入非过期时间的数据集。
2、volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰。redis 并不是保证取得所有数据集中最近将要过期的键值对,而只是随机挑选的几个键值对中的, 当内存达到限制的时候无法写入非过期时间的数据集。
3、volatile-random:从已设置过期时间的数据集中任意选择数据淘汰。当内存达到限制的时候无法写入非过期时间的数据集。
4、allkeys-lru:从数据集中挑选最近最少使用的数据淘汰。当内存达到限制的时候,对所有数据集挑选最近最少使用的数据淘汰,可写入新的数据集。
5、allkeys-random:从数据集中任意选择数据淘汰,当内存达到限制的时候,对所有数据集挑选随机淘汰,可写入新的数据集。
6、no-enviction(驱逐):禁止驱逐数据。当内存达到限制的时候,不淘汰任何数据,不可写入任何数据集,所有引起申请内存的命令会报错。

2、如何配置

我们通过配置redis.conf中的maxmemory这个值来开启内存淘汰功能。

# maxmemory

值得注意的是,maxmemory为0的时候表示我们对Redis的内存使用没有限制。
根据应用场景,选择淘汰策略

# maxmemory-policy noeviction

我们来了解下,内存淘汰的过程

  • 首先,客户端发起了需要申请更多内存的命令(如set)。
  • 然后,Redis检查内存使用情况,如果已使用的内存大于maxmemory,则开始根据用户配置的不同淘汰策略来淘汰内存(key),从而换取一定的内存。
  • 最后,如果上面都没问题,则这个命令执行成功。

动态改配置命令
此外,redis支持动态改配置,无需重启。
设置最大内存

config set maxmemory 100000

设置淘汰策略

config set maxmemory-policy noeviction

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值