首页 > 数据库 >Redis淘汰策略

Redis淘汰策略

时间:2024-04-26 10:46:03浏览次数:23  
标签:策略 Redis lru key TTL volatile 淘汰

Redis过期策略有几种?

Redis中提供八种过期策略,默认是noeviction,即不删除任何数据,当内存不足时会直接报错。可以在Redis的配置文件中进行设置。

  • noeviction:不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略。
  • volatile-ttl: 对设置了TTL的key,比较key的剩余TTL值,TTL越小越先被淘汰。
  • allkeys-random:对全体key随机进行淘汰。
  • volatile-random:对设置了TTL的key,随机进行淘汰。
  • allkeys-lru:对全体key,基于LRU算法进行淘汰。
  • volatile-lru:对设置了TTL的key,基于LRU算法进行淘汰。
  • allkeys-lfu:对全体key,基于LFU算法进行淘汰。
  • volatile-lfu:对设置了TTL的key,基于LFU算法进行淘汰。
    这里面有两个非常重要的概念,一个是LRU,另外一个是LFU。LRU的意思是最近最少使用,通过当前时间减去最后一次访问时间来计算一个值,该值越大,则淘汰优先级越高。LFU的意思是最少频率使用,它会统计每个key的访问频率,值越小,则淘汰优先级越高。
    在项目中,我们可以设置为allkeys-lru,即挑选最近最少使用的数据进行淘汰,这样可以保留一些经常访问的key在Redis中。
    如果项目中涉及到置顶操作,可以设置为volatile-lru,置顶的缓存数据不指定过期时间。

如果数据库有1000万条数据,而Redis只能缓存20万条数据,如何保证Redis中都是热点数据?

可以使用allkeys-lru(挑选最近最少使用的数据淘汰)淘汰策略,这样留下来的都是经常访问的热点数据。

当Redis的内存用完了会发生什么?

主要取决于数据淘汰策略。如果是默认的配置(noeviction),Redis会直接报错,因为无法删除任何数据以腾出内存空间。

标签:策略,Redis,lru,key,TTL,volatile,淘汰
From: https://www.cnblogs.com/worshipone/p/18159485

相关文章

  • Redis场景
    redis应用场景Redis在缓存和队列方面有着广泛的应用场景,下面详细介绍一下:缓存应用场景:页面缓存:在Web应用中,Redis可以用作页面缓存,存储页面渲染结果,以减轻数据库的压力,提高页面响应速度。当用户请求某个页面时,首先检查Redis中是否存在该页面的缓存,如果存在则直接返回缓......
  • redis安装及使用
    Redis与传统数据库的一个主要区别在于,Redis把所有数据都存储在内存中,而传统数据库通常只会把数据的索引存储在内存中,并将实际的数据存储在硬盘中。为了满足不同的持久化需求,Redis提供了RDB持久化、AOF持久化和RDB-AOF混合持久化等多种持久化方式以供用户选择。如果用户有需要,也......
  • redis使用
    Pythonredis使用介绍|菜鸟教程(runoob.com)Python操作Redis,你要的都在这了!-John-Python-博客园(cnblogs.com)redis基本命令Stringset(name,value,ex=None,px=None,nx=False,xx=False)在Redis中设置值,默认,不存在则创建,存在则修改。参数:ex-过期时间(秒......
  • Redis过期策略
    在Redis中提供了两种数据过期删除策略:惰性删除:在设置该key过期时间后,我们不去管它。当需要该key时,我们会检查其是否过期,如果过期,就删除它;反之,返回该key。定期删除:每隔一段时间,我们会对一些key进行检查,删除其中过期的key。定期清理有两种模式:SLOW模式:使用定时任务,执行频率......
  • Redis 面试知识点
    1、Redis缓存数据库一致性采用最终一致性,而不是采用强一致性,强一致性会导致系统吞吐量变差;采用双删除的策略,第二次删除,采用延迟删除;推荐采用,先操作数据库,直接删除缓存的方式;删除失败的情况,采用异步方式,重试操作;读取binlog异步删除,使用开源框架canal,监听canal......
  • LoRa技术在物联网领域的安全性挑战与应对策略分享
    随着物联网技术的飞速发展,LoRa技术作为一种新兴的无线通信技术,在物联网领域展现出了广阔的应用前景。然而,与此同时,其安全性问题也日益凸显,成为了制约其进一步发展的重要因素。本文将深入分析LoRa网络存在的安全漏洞,探讨可能受到的攻击类型,并提出相应的应对策略。首先,我们需要认识......
  • Redis缓存穿透,击穿和雪崩
    缓存穿透缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到DB去查询,可能导致DB挂掉。这种情况大概率是遭到了攻击。解决方案的话,我们通常都会用布隆过滤器来解决它。布隆过滤器主要是用于检索一个元素是否在......
  • Redis持久化
    redis做为缓存,数据的持久化是怎么做的?在Redis中提供了两种数据持久化的方式:RDBAOF这两种持久化方式有什么区别呢?RDB是一个快照文件,它是把redis内存存储的数据写到磁盘上,当redis实例宕机恢复数据的时候,方便从RDB的快照文件中恢复数据。AOF的含义是追加文件,当redis操作写......
  • Redis进阶 -
    之前已经总结了Redis的基础使用  springboot3+vue3(八)Redis基础使用--登录优化Redis进阶主要总结一下以下知识点:Redis持久化Redis主从Redis哨兵Redis分片集群 Redis单节点问题,以及解决方案:1、数据丢失问题(Redis是内存存储,服务器重启可能会丢失数据。)-----解决......
  • redis ----window本地服务
    注册为本地服务进入Redis安装目录,命令格式如下:--service-install服务安装命令--service-name指定服务名--port指定端口运行如下命令:注意:需要在redis.windows.conf配置文件中修改port为6379(默认不用修改)注册成功,查询服务列表,redis服务注册成功,如下图图:2.2启动本地服务服务注......