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

Redis的淘汰策略

时间:2023-09-07 14:04:06浏览次数:37  
标签:策略 删除 Redis volatile key 淘汰

edis默认的淘汰策略

Redis是一款开源的高性能内存数据库,广泛应用于Web应用缓存、消息队列、实时数据分析等领域。在使用Redis时,淘汰策略是其中一个重要的概念,它决定了当Redis内存不足时,被选择删除的key是哪些。

Redis的淘汰策略有6种,分别是:

1. noeviction

noeviction是默认淘汰策略,即当Redis内存不足时,不执行任何淘汰操作,所有的写操作都会返回错误,这样可以保证Redis内存不会被其他进程抢占。但是这种策略会导致Redis进程被强制杀死,数据全部丢失,因此不建议在生产环境中使用。

2. volatile-lru

volatile-lru是最近最少使用策略,它会优先删除最近最少使用的带有过期时间的key,因为这些key已经失效了,可以让必要的空间释放出来。这种策略的缺点是可能会导致一些热门的key被删除。

3. volatile-ttl

volatile-ttl是根据key的过期时间来淘汰的策略,即先删除那些过期时间距离现在最近的key。因为这些key的实效性已经到期,删除它们可以确保Redis存储的数据是新鲜的。

4. volatile-random

volatile-random是随机淘汰策略,即从过期的key中随机选择一个删除,这种策略的优点是简单快速,缺点是不够优化。

5. allkeys-lru

allkeys-lru是对所有key进行最近最少使用策略淘汰,即选择最近最少使用的key删除。这种策略虽然会导致一些热门的key被误删,但是可以保证Redis存储的数据是最新的。

6. allkeys-random

allkeys-random是随机淘汰策略,即从所有key中随机选择一个删除,这种策略同样简单快速,但是不够优化。

从上面可见,常用的淘汰策略有两种,分别是volatile-lru和volatile-ttl,前者适用于热点数据,后者适用于带有过期时间的数据。如果需要自定义淘汰策略,可以通过Redis的API接口实现,例如使用ZSET作为过期时间的有序集合,定期删除过期元素。

让我们看一下Redis如何设置淘汰策略。Redis的配置文件redis.conf中有一项maxmemory,它表示Redis使用的最大内存,当达到这个阈值时,Redis会执行淘汰操作。在配置文件中,可以通过maxmemory-policy属性来设置淘汰策略,例如:maxmemory-policy volatile-lru。同时,我们也可以使用Redis的命令行工具redis-cli来动态设置maxmemory-policy,例如:CONFIG SET maxmemory-policy volatile-lru。

标签:策略,删除,Redis,volatile,key,淘汰
From: https://blog.51cto.com/zuolei/7396531

相关文章

  • 【Redis】Could not create server TCP listening socket __6379_ bind_ 在一个非套接
    问题描述:安装Redis,redis-server无法启动,报错。[34420]20Aug21:43:21.110#oO0OoO0OoO0OoRedisisstartingoO0OoO0OoO0Oo[34420]20Aug21:43:21.110#Redisversion=5.0.14.1,bits=64,commit=ec77f72d,modified=0,pid=34420,juststarted[34420]20Aug21:43:21.1......
  • 行为型设计模式-策略 Strategy
    简介一组实现了同一个策略接口的策略,可以随时指定用哪一种策略完成业务。策略模式其实跟桥接模式很像,都是通过持有另一个对象,达到组合的效果。角色Context上下文可设置使用的Strategy抽象Strategy具体Strategy类图如图,Context使用setStrategy方法设置当前使......
  • MacBook安装Redis
    1.下载redis最新的稳定版https://github.com/redis/redis/archive/7.2.1.tar.gz2.解压TIGERHUTANG-MB0:redisroot#tar-zxf7.2.1.tar.gzTIGERHUTANG-MB0:redisroot#ls-latotal8232drwxr-xr-x4rootstaff1289710:42.drwxr-xr-x4tigerhu......
  • 弹性数据库连接池探活策略调研(二)——Druid | 京东云技术团队
    前言在上一篇文章中,我们介绍了弹性数据库连接失效的背景,并探讨了HikariCP连接池探活策略的相关内容。在本文中,我们将会继续探讨另一个线上常用的连接池——Druid,并为您介绍如何在使用Druid时实现最佳实践的弹性数据库连接池探活策略。DruidDruid的版本迭代更新比较快,同时探活配置的......
  • Redis系列之——主从复制原理与优化、缓存的使用和优化
    @目录一什么是主从复制1.1原理1.2主库是否要开启持久化1.3辅助配置(主从数据一致性配置)二复制的配置2.1slave命令2.2配置文件四故障处理五复制常见问题缓存的使用和优化一缓存的收益与成本1.1受益1.2成本1.3使用场景二缓存更新策略三缓存粒度控制四缓存穿透,缓存......
  • py 导入json到redis的代码示例
    这里是一个py导入json到redis的代码示例,它会将字典、列表和元组类型的值序列化为JSON字符串。在这个修改后的脚本中,使用`json.dumps()`函数对这些数据类型进行序列化处理。```pythonimportjsonimportredis#替换为您的JSON文件路径及Redis服务器连接参数json_file_pa......
  • Redis持久化机制
    1.怎么保证Redis挂掉之后再重启数据可以进行恢复?(持久化)很多时候我们需要持久化数据也就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据(比如重启机器、机器故障之后恢复数据),或者是为了防止系统故障而将数据备份到一个远程位置。Redis不同于Memcached......
  • 什么是 Redis?
    Redis(RemoteDictionaryServer)是一个使用C语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。Redis可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。与传统数据库不同的是Redis的......
  • R语言逻辑回归Logistic选股因素模型交易策略及沪深300指数实证|附代码数据
    全文链接:http://tecdat.cn/?p=32071原文出处:拓端数据部落公众号最近我们被客户要求撰写关于交易策略的研究报告,包括一些图形和统计输出。随着中国的证券市场规模的不断壮大、市场创新不断深化、信息披露不断完善、市场监管不断强化,随着现代投资组合理论的发展和计算机技术的进......
  • Linux基础38 负载均衡会话保持(redis配session共享), 四层负载均衡, nginx端口转发
    一、负载均衡会话保持当用户访问页面登录后,会在服务器上生成一个session文件,并且返回给浏览器一个session_id内容的cookie,cookie会存在浏览器中,下一次访问cookie会携带session_id来到服务器验证,没有变化则说明是登录状态,不需要重新登录1.session共享的方法1.把session文件保......