Redis的缓存淘汰策略

Redis缓存使用内存来保存数据从而避免业务应用从后端数据库读取数据,来提升应用的响应速度。

为了保证较高的性价比,缓存的空间容量必然要小于后端数据库的数据总量。不过,内存大小毕竟有限,随着要缓存的数据量越来越大,有限的缓存空间不可避免地会被写满。

其中重要机制就是——缓存数据的淘汰机制,数据淘汰机制就包括两步:第一、根据一定的策略,筛选出"不重要"的数据,第二,将这些数据从缓存中删除,节省内存空间;

在电商商品的场景下,热门商品的信息可能只占到总商品数据信息量的5%,但是这些商品信息承载的可能是超过90%的访问请求。但如果业务应用要对所有商品信息进行查询统计,这时候,即使按照“八二原理”缓存了20%的商品数据,也不能获得很好的访问性能,因为80%的数据仍然需要从后端数据库中获取。

在当前应用中,用户的个性化需求越来越多使得用户的访问请求和贡献的访问量比例不具备八二原理,剩余的80%的数据可能贡献了更多的访问量,所以缓存容量的设定需要根据应用数据访问特征和成本开销来综合考虑

系统设计过程中,大容量缓存能够带来性能加速的收益,小容量缓存就不一定能起到加速访问的效果,一般会建议把缓存容量设置为总数据量的15%到30%,兼顾访问性能和内存空间开销

当然缓存被写满是不可避免的,那么在缓存写满时就需要决定淘汰哪些数据以及如何处理那些被淘汰的数据。

当 Redis 内存超出物理内存限制时,内存的数据会开始和磁盘产生频繁的交换 (swap)。交换会让 Redis 的性能急剧下降,对于访问量比较频繁的 Redis 来说,这样龟速的存取效率基本上等于不可用。

在生产环境中我们是不允许 Redis 出现交换行为的,为了限制最大使用内存,Redis 提供了配置参数 maxmemory 来限制内存超出期望大小。

当实际内存超出 maxmemory 时,Redis 提供了几种可选策略 (maxmemory-policy) 来让用户自己决定该如何腾出新的空间以继续提供读写服务。

Redis缓存的淘汰策略

Redis中一共有8种内存淘汰策略,可以按照是否会进行数据淘汰对其进行分类:

  • 不进行数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值