Redis 缓存清理策略
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 缓存清理策略相关推荐
- 高性能服务器架构(二):缓存清理策略
原文链接:https://mp.weixin.qq.com/s/OopSWbLrzT-V11VDZOpxJw 虽然使用缓存思想似乎是一个很简单的事情,但是缓存机制却有一个核心的难点,就是--缓存清理. ...
- Redis缓存淘汰策略
文章目录 noeviction allkeys-lru allkeys-lfu volatile-lru volatile-lfu allkeys-random volatile-random vol ...
- Redis 缓存删除策略
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言 ...
- Redis缓存失效策略思考
1 删除过期数据 我们设置Redis元素时可以指定过期时间,那么Redis如何删除这些超时元素?Redis采用了两种策略:定期删除和惰性删除. (1) 定期删除 Redis每隔一段时间就检查哪些KEY ...
- redis缓存清除策略 、获取dumb.rdb或者***.aof文件的位置
redis缓存清除策略 获取dumb.rdb或者***.aof文件的位置
- 说说 Redis 缓存删除策略
Redis 缓存删除策略分为定时删除.定期删除与惰性删除.前两个是主动删除,后一个是被动删除. 1 定时删除 为 key 设置一个过期时间,时间一到,由定时器任务删除这个 key. 优点:节省内存,因 ...
- Redis缓存过期策略
转载出处链接 一.背景 线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责? 常见的有两个问题: 往 redis 写入的数据怎么没了? 可能有同学 ...
- Google guava第一讲:guava缓存实战/使用场景/缓存清理/最佳实践/caffeine实战
Guava缓存实战及使用场景 摘要:本文是Google guava 第一件,本文先介绍了为什么使用Guava Cache缓存,然后讲解了使用方法及底层数据结构,结合实际业务,讲解使用guava过程中踩 ...
- java cache缓存_Redis缓存失效策略思考
1 删除过期数据 我们设置Redis元素时可以指定过期时间,那么Redis如何删除这些超时元素?Redis采用了两种策略:定期删除和惰性删除. (1) 定期删除 Redis每隔一段时间就检查哪些KEY ...
- redis数据结构、持久化、缓存淘汰策略
Redis 单线程高性能,它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题.redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,依次放 ...
最新文章
- 华数机器人码垛_冲压机器人研究现状与发展方向
- cover letter 转
- Oracle 中间件云服务器系统 ExaLogic X2 - 2 和 T3-1B概述
- 70%的单身女孩都是这样想的!
- php主机安装v2,RackTables 安装教程Installation GuideV2
- 使用BusyBox制作嵌入式Linux根文件系统
- TCP中间件_个人方案
- linux virtualhost不能正常运行,造成网站无法正常运行的4个原因!
- 前置++与后置++之一道简单的题目引发的思考
- Castle Team宣布Castle将与ASP.NET MVC整合
- mfc--使用ShellExecute打开另一个可执行程序
- Linux下安装HP打印机的驱动程序
- 计算机键盘上如何打对勾,电脑键盘怎么打对勾符号
- Sql语句查询今天、昨天、本月等日期数据
- vim菜鸟学习-杂篇(windows篇)
- 任正非:《一江春水向东流》
- 基于C语言设计的一个医院叫号系统
- Python小白逆袭大神-结营心得-alading
- CGAL例程:地理信息系统----点云数据生成DSM、DTM、等高线和数据分类
- PLGA-PEG-MAL +多肽A+多肽B+DOX;PLGA-PEG-MAL +DOX