iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >浅谈Redis缓存有哪些淘汰策略
  • 855
分享到

浅谈Redis缓存有哪些淘汰策略

2024-04-02 19:04:59 855人浏览 独家记忆
摘要

目录Redis过期策略 定时删除 惰性删除 定期删除 Redis的内存淘汰机制 LRU和LFU的区别 LRU LFU Redis重启如何恢复数据呢? 总结Redis过期策略 我们首

Redis过期策略

我们首先来了解一下Redis的内存淘汰机制。

定时删除

概述
    redis默认是每隔 100ms 就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。注意这里是随机抽取的。为什么要随机呢?你想一想假如 redis 存了几十万个 key ,每隔100ms就遍历所有的设置过期时间的 key 的话,就会给 CPU 带来很大的负载!

优点

  • 保证内存被尽快释放

缺点

  • 若过期key很多,删除这些key会占用很多的CPU时间,在CPU时间紧张的情况下,CPU不能把所有的时间用来做要紧的事儿,还需要去花时间删除这些key。
  • 定时器的创建耗时,若为每一个设置过期时间的key创建一个定时器(将会有大量的定时器产生),性能影响严重

总结

用处理器性能换取存储空间 (拿时间换空间)

惰性删除

key过期的时候不删除,每次从数据库获取key的时候去检查是否过期,若过期,则删除,返回null。

优点

  • 删除操作只发生在从数据库取出key的时候发生,而且只删除当前key,所以对CPU时间的占用是比较少的,而且此时的删除是已经到了非做不可的地步。

缺点

  • 若大量的key在超出超时时间后,很久一段时间内,都没有被获取过,那么可能发生内存泄露(无用的垃圾占用了大量的内存)

总结

用存储空间换取处理器性能(拿空间换时间)

定期删除

如果当前库中没有一个key设置了过期时间,直接执行下一个库的遍历,随机获取一个设置了过期时间的key,检查该key是否过期,如果过期,删除key,判断定期删除操作是否已经达到指定时长,若已经达到,直接退出定期删除。(默认每个库检测20个key)

优点

  • 通过限制删除操作的时长和频率,来减少删除操作对CPU时间的占用--处理"定时删除"的缺点 2)定期删除过期key--处理"惰性删除"的缺点。
  • 定期删除过期key--处理"惰性删除"的缺点。

缺点

  • 在内存友好方面,不如"定时删除"。
  • 在CPU时间友好方面,不如"惰性删除"。

Redis的内存淘汰机制

简述
Redis有过期策略,假如你的Redis只能存1G的数据,你一个请求写入2G,而你也没有及时请求key,那么惰性删除就不生效了,Redis占用内存就会越来越高。

Redis可以设置内存大小:


# maxmemory <bytes>
# 设置Redis最大占用内存大小为100
maxmemory 100mb

超过了这个内存大小,就会触发内存淘汰机制,Redis有一个默认配置,这个是Redis的默认 内存淘汰机制:


# maxmemory-policy noeviction

maxmemory-policy一共有8个值,当内存不足时:

  • noeviction: 不删除,直接返回报错信息。
  • allkeys-lru:移除最久未使用(使用频率最少)使用的key。推荐使用这种。
  • volatile-lru:在设置了过期时间key中,移除最久未使用的key。
  • allkeys-random:随机移除某个key。
  • volatile-random:在设置了过期时间的key中,随机移除某个key。
  • volatile-ttl: 在设置了过期时间的key中,移除准备过期的key。
  • allkeys-lfu:移除最近最少使用的key。
  • volatile-lfu:在设置了过期时间的key中,移除最近最少使用的key。

LRU和LFU的区别

LRU

LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!
比如有数据 1,1,1,2,2,3 此时缓存中已有(1,2) 当3加入的时候,得把前面的1淘汰,变成(3,2)

LFU

LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!

比如有数据 1,1,1,2,2,3 缓存中有(1(3次),2(2次)) 当3加入的时候,得把后面的2淘汰,变成(1(3次),3(1次))

Redis重启如何恢复数据呢?

Redis启动前会先检查AOF文件,不存在才会去加载RDB文件,因为AOF的数据完整性高,最多也就损失1秒的数据。

总结

  • AOF恢复比较慢;RDB文件小,恢复快。
  • RDB是数据快照文件,AOF是命令操作的日志文件,追加写。

到此这篇关于浅谈Redis缓存有哪些淘汰策略的文章就介绍到这了,更多相关Redis缓存淘汰策略内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈Redis缓存有哪些淘汰策略

本文链接: https://www.lsjlt.com/news/132826.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈Redis缓存有哪些淘汰策略
    目录Redis过期策略 定时删除 惰性删除 定期删除 Redis的内存淘汰机制 LRU和LFU的区别 LRU LFU Redis重启如何恢复数据呢? 总结Redis过期策略 我们首...
    99+
    2022-11-12
  • Redis缓存中的淘汰策略有哪些
    本篇内容主要讲解“Redis缓存中的淘汰策略有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis缓存中的淘汰策略有哪些”吧!我们知道Redis缓存使用...
    99+
    2022-10-18
  • 浅谈redis的maxmemory设置以及淘汰策略
    redis的maxmemory参数用于控制redis可使用的最大内存容量。如果超过maxmemory的值,就会动用淘汰策略来处理expaire字典中的键。 关于redis的淘汰策略: Redis提供了下面几...
    99+
    2022-06-04
    浅谈 策略 redis
  • 浅谈Redis中的内存淘汰策略和过期键删除策略
    目录8种淘汰策略过期键的删除策略总结 redis是我们现在最常用的一个工具,帮助我们建设系统的高可用,高性能。 而且我们都知道redis是一个完全基于内存的工具,这也是redis速...
    99+
    2022-11-12
  • Redis缓存的淘汰策略是什么
    这篇文章主要讲解了“Redis缓存的淘汰策略是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis缓存的淘汰策略是什么”吧!Redis(Remote...
    99+
    2022-10-18
  • 浅谈Redis 中的过期删除策略和内存淘汰机制
    目录前言Redis 中 key 的过期删除策略1、定时删除2、惰性删除3、定期删除Redis 中过期删除策略从库是否会脏读主库创建的过期键内存淘汰机制内存淘汰触发的最大内存有哪些内存...
    99+
    2022-11-13
  • redis 的 maxmemory 配置以及 缓存淘汰策略
    1. maxmemory 相关介绍 maxmemory 的作用 设置 redis 可用内存的上限。 maxmemory 的配置 将 maxmemory 设置为零将导致没有内存限制。这是 64 位系统的默认行为,而32位系统使用 3G...
    99+
    2015-05-05
    redis maxmemory 配置以及 缓存淘汰策略
  • 浅谈Redis缓存更新策略
     内存淘汰超时剔除主动更新说明不用自己维护,利用Redis的内存淘汰机制,当内存不足时自动淘汰部分数据。下次查询时更新缓存给缓存数据添加TTL时间,到期后自动删除缓存,下次...
    99+
    2022-11-13
    redis缓存策略 redis缓存更新策略 redis缓存更新机制
  • redis缓存中怎么实施数据淘汰策略
    这篇文章将为大家详细讲解有关redis缓存中怎么实施数据淘汰策略,文章内容质量较高,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在 redis 中,允许用户设置最大使用内存大小通过配置re...
    99+
    2022-10-18
  • redis缓存策略有哪些
    小编给大家分享一下redis缓存策略有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!将Redis用作缓存时, 如果内存空间用...
    99+
    2022-10-18
  • Redis 缓存淘汰策略和事务实现乐观锁详情
    目录缓存淘汰策略标题LRU原理标题Redis缓存淘汰策略设置最大缓存淘汰策略Redis事务Redis事务介绍MULTIEXECDISCARDWATCHRedis 不支持事务回滚(为什...
    99+
    2022-11-13
  • Redis 缓存淘汰策略和事务实现乐观锁详情
    目录缓存淘汰策略标题LRU原理标题Redis缓存淘汰策略设置最大缓存淘汰策略Redis事务Redis事务介绍MULTIEXECDISCARDWATCHRedis 不支持事务回滚(为什么呢)Redis乐观锁Redis乐观锁...
    99+
    2022-07-21
    Redis 缓存淘汰策略 Redis 事务实现乐观锁
  • Redis的内存淘汰策略和过期删除策略有什么区别
    本文小编为大家详细介绍“Redis的内存淘汰策略和过期删除策略有什么区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“Redis的内存淘汰策略和过期删除策略有什么区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-02
  • redis中有哪些内存淘汰机制
    这篇文章将为大家详细讲解有关redis中的内存淘汰机制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Redis内存淘汰指的是用户存储的一些键被可以被Redi...
    99+
    2022-10-18
  • 缓存服务的更新策略有哪些?
    在互联网项目开发中,缓存的应用是非常普遍了,缓存可以帮助页面提高加载速度,减少服务器或数据源的负载。 1、为什么需要缓存 一般在项目中,最消耗性能的地方就是后端服务的数据库了。而数据库的读写频...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作