Redis的数据淘汰策略

Redis的数据淘汰策略


1. 概念引入:

作为当前最常用的开源内存数据库,高性能,支持数据的持久化,多种数据结构存储,master-slave模式数据备份,支持集群。使得Redis的使用较为普遍,但是它是一个内存kv存储,每个server的内存都是有限的,长期将Redis作为缓存应用,就会遇到空间存储瓶颈,使得Redis性能急剧下降,为了合理分配和利用内存,必须对内存中的相关数据设置过期时间和淘汰策略。

在Redis生产环境中,采用配置参数maxmemory的方式来限制内存大小。当实际存储内存超出maxmemory参数值时,就可以选用Redis内存淘汰策略。


2. 六种淘汰策略介绍:

1. noeviction(系统默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外);

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

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

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

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

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

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


3. 获取及设置内存淘汰策略:

1、获取当前内存淘汰策略:

127.0.0.1:6379> config get maxmemory-policy

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

127.0.0.1:6379> config get maxmemory

说明:如果不设置最大内存大小或者设置最大内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。32 位的机器最大只支持 4GB 的内存,而系统本身就需要一定的内存资源来支持运行,所以 32 位机器限制最大 3 GB 的可用内存

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

4. 具体应用案例:

问题

如果Mysql里有 2000W 数据,而Redis中只能存 20W 数据,如何保证redis中的数据都是热点数据 ?

方案

只能存储 20w 条数据,那肯定要保证redis存储的都是热点数据,即:被频繁访问到的数据;并且要保证Redis的内存能够存放20w数据,要计算出Redis内存的大小。

(1) 保留热点数据:对于保留 Redis 热点数据来说,我们可以设定 Redis 的key过期时间 结合 内存淘汰策略来实现,比如,使用allkeys-lru淘汰策略,该淘汰策略是从 Redis 的数据中挑选最近最少使用的数据删除,这样频繁被访问的数据就可以保留下来了。

(2) 保证 Redis 只存20w的数据:1个中文占2个字节,假如1条数据有100个中文,则1条数据占200字节,20w数据 乘以 200字节 等于 4000万个字节(约等于38M);所以要保证能存20w数据,Redis 需要38M的内存,对应的内存设定之后,一旦数据满了就可以触发我们的数据淘汰策略,保证数据存储满足20w且为热点数据。





参考:https://blog.csdn.net/ju_362204801/article/details/114441137

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值