1、LRU算法概述

redis默认情况下就是使用LRU策略的,因为内存是有限的,但是如果你不断地往redis里面写入数据,那肯定是没法存放下所有的数据在内存的

所以redis默认情况下,当内存中写入的数据很满之后,就会使用LRU算法清理掉部分内存中的数据,腾出一些空间来,然后让新的数据写入redis缓存中

LRU:Least Recently Used,最近最少使用算法

将最近一段时间内,最少使用的一些数据给移除掉;

2、缓存清理设置

配置文件:redis.conf
配置属性:maxmemory,设置redis用来存放数据的最大的内存大小,一旦超出这个内存大小之后,就会立即使用LRU算法清理掉部分数据

对于64 bit的机器,如果maxmemory设置为0,那么就默认不限制内存的使用,直到耗尽机器中所有的内存为止; 
但是对于32 bit的机器,有一个隐式的闲置就是3GB

配置属性:maxmemory-policy,可以设置内存达到最大闲置后,采取什么策略来处理

  • (1)noeviction: 如果内存使用达到了maxmemory,client还要继续写入数据,那么就直接报错给客户端
  • (2)allkeys-lru: 就是我们常说的LRU算法,移除掉最近最少使用的那些keys对应的数据(最常用的)
  • (3)volatile-lru: 也是采取LRU算法,但是仅仅针对那些设置了指定存活时间(TTL)的key才会清理掉
  • (4)allkeys-random: 随机选择一些key来删除掉
  • (5)volatile-random: 随机选择一些设置了TTL的key来删除掉
  • (6)volatile-ttl: 移除掉部分keys,选择那些TTL时间比较短的keys

3、缓存清理的流程

  • (1)客户端执行数据写入操作
  • (2)redis server接收到写入操作之后检查maxmemory的限制,如果超过了限制那么就根据对应的policy配置清理部分数据
  • (3)写入操作完成执行

Redis 缓存清理策略相关推荐

  1. 高性能服务器架构(二):缓存清理策略

    原文链接:https://mp.weixin.qq.com/s/OopSWbLrzT-V11VDZOpxJw 虽然使用缓存思想似乎是一个很简单的事情,但是缓存机制却有一个核心的难点,就是--缓存清理. ...

  2. Redis缓存淘汰策略

    文章目录 noeviction allkeys-lru allkeys-lfu volatile-lru volatile-lfu allkeys-random volatile-random vol ...

  3. Redis 缓存删除策略

    Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言 ...

  4. Redis缓存失效策略思考

    1 删除过期数据 我们设置Redis元素时可以指定过期时间,那么Redis如何删除这些超时元素?Redis采用了两种策略:定期删除和惰性删除. (1) 定期删除 Redis每隔一段时间就检查哪些KEY ...

  5. redis缓存清除策略 、获取dumb.rdb或者***.aof文件的位置

    redis缓存清除策略 获取dumb.rdb或者***.aof文件的位置

  6. 说说 Redis 缓存删除策略

    Redis 缓存删除策略分为定时删除.定期删除与惰性删除.前两个是主动删除,后一个是被动删除. 1 定时删除 为 key 设置一个过期时间,时间一到,由定时器任务删除这个 key. 优点:节省内存,因 ...

  7. Redis缓存过期策略

    转载出处链接 一.背景 线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责? 常见的有两个问题: 往 redis 写入的数据怎么没了? 可能有同学 ...

  8. Google guava第一讲:guava缓存实战/使用场景/缓存清理/最佳实践/caffeine实战

    Guava缓存实战及使用场景 摘要:本文是Google guava 第一件,本文先介绍了为什么使用Guava Cache缓存,然后讲解了使用方法及底层数据结构,结合实际业务,讲解使用guava过程中踩 ...

  9. java cache缓存_Redis缓存失效策略思考

    1 删除过期数据 我们设置Redis元素时可以指定过期时间,那么Redis如何删除这些超时元素?Redis采用了两种策略:定期删除和惰性删除. (1) 定期删除 Redis每隔一段时间就检查哪些KEY ...

  10. redis数据结构、持久化、缓存淘汰策略

    Redis 单线程高性能,它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题.redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放 ...

最新文章

  1. 华数机器人码垛_冲压机器人研究现状与发展方向
  2. cover letter 转
  3. Oracle 中间件云服务器系统 ExaLogic X2 - 2 和 T3-1B概述
  4. 70%的单身女孩都是这样想的!
  5. php主机安装v2,RackTables 安装教程Installation GuideV2
  6. 使用BusyBox制作嵌入式Linux根文件系统
  7. TCP中间件_个人方案
  8. linux virtualhost不能正常运行,造成网站无法正常运行的4个原因!
  9. 前置++与后置++之一道简单的题目引发的思考
  10. Castle Team宣布Castle将与ASP.NET MVC整合
  11. mfc--使用ShellExecute打开另一个可执行程序
  12. Linux下安装HP打印机的驱动程序
  13. 计算机键盘上如何打对勾,电脑键盘怎么打对勾符号
  14. Sql语句查询今天、昨天、本月等日期数据
  15. vim菜鸟学习-杂篇(windows篇)
  16. 任正非:《一江春水向东流》
  17. 基于C语言设计的一个医院叫号系统
  18. Python小白逆袭大神-结营心得-alading
  19. CGAL例程:地理信息系统----点云数据生成DSM、DTM、等高线和数据分类
  20. PLGA-PEG-MAL +多肽A+多肽B+DOX;PLGA-PEG-MAL +DOX

热门文章

  1. 羽毛球·印尼赛 | 国羽男双新高塔组合惊喜进决赛
  2. 系统中如何做到实名认证
  3. 由随机数生成器到宿命论
  4. C 小鑫の日常系列故事(七)——小纸条 SDUT
  5. kpi绩效考核流程图_KPI绩效考核的步骤
  6. 想要自己开发App难吗?教你快速生成App
  7. 求助各位大佬啊,不小心通过vscode放弃更改的文件有办法恢复过来吗?小弟在此求助各位大神了
  8. Unity 之游戏特效
  9. HTML5中英文对照字典,VRay中英文对照表
  10. 7-4 韩信点兵 (10 分)