首页 > 数据库 >Redis 6种淘汰策略说明

Redis 6种淘汰策略说明

时间:2023-02-24 17:44:35浏览次数:38  
标签:策略 过期 db Redis 内存 淘汰 数据


一、键的过期时间
Redis可以为每一个键设置过期时间,当键过期之后,会自动删除该键。对于散列表这种容器,只能为整个键设置过期时间(整个散列表),而不能为键里面的单个元素设置过期时间。

二、数据淘汰策略
可以设置内存最大使用量,当内存使用量超出的时候,会执行数据淘汰策略。
Redis具体有6种淘汰策略

  1. volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
  2. volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
  3. volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
  4. allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
  5. allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
  6. no-enviction(驱逐):禁止驱逐数据

作为内存数据库,出于对性能和内存消耗的考虑,Redis 的淘汰算法实际实现上并非针对所有 key,而是抽样一小部分并且从中选出被淘汰的 key。

使用 Redis 缓存数据时,为了提高缓存命中率,需要保证缓存数据都是热点数据。可以将内存最大使用量设置为热点数据占用的内存量,然后启用 allkeys-lru 淘汰策略,将最近最少使用的数据淘汰。

Redis 4.0 引入了 volatile-lfu 和 allkeys-lfu 淘汰策略,LFU 策略通过统计访问频率,将访问频率最少的键值对淘汰。

总结

redis 每服务客户端执行一个命令的时候,会检测使用的内存是否超额。如果超额,即进行数据淘汰


————————————————
版权声明:本文为CSDN博主「NUS_Ryan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:

https://blog.csdn.net/qq_43398345/article/details/128968848

https://www.shuzhiduo.com/A/6pdDyXBLzw/

标签:策略,过期,db,Redis,内存,淘汰,数据
From: https://www.cnblogs.com/sword0077/p/17152579.html

相关文章

  • redis_概述与redis_下载&安装
    redis_概述: redis是一款高性能的NOSQL系列的非关系型数据库 什么是NOSQLNoSQL(NoSQL=NotOnlySQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系......
  • redis list操作 set&sortedset操作
               ......
  • 880~811 redis持久化RDB,AOF
    4.持久化1、redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。2、redis持久化机制:......
  • Linux 安装Redis-6.2.5
    https://blog.csdn.net/weixin_40750377/article/details/122110481https://blog.csdn.net/weixin_44353336/article/details/114601513#1.3、编译并安装Redis......
  • Redis SET命令用于在Redis键中设置一些字符串值。
    RedisSET命令用于在Redis键中设置一些字符串值。返回值如果在键中设置了值,返回简单字符串回复:OK。如果值没有设置则返回Null。语法下面是RedisSET命令的基本语法......
  • redis
    Lastlogin:FriFeb2408:36:17onconsoleccccC:~liuhuibin$brewinstallredisWarning:YouareusingmacOS10.13.We(andApple)donotprovidesupportfor......
  • redis(3)关于key键的常用命令
    Redis键的常用命令keys*:查看当前库所有keyexistskey:判断某个key是否存在typekey:查看key的类型delkey:删除指定的keyunlinkkey:异步删除指定的key(仅将keys从keysp......
  • [redis]定制封装redis的docker镜像
    前言应开发需求,定制封装redis的docker镜像,需要通过环境变量修改redis的密码。redis.confport6379requirepassREDIS_PASSWDdaemonizenoprotected-modeyesio-thre......
  • Redis 应用模式-学习
    在服务开发中,单机都会存在单点故障的问题,及服务部署在一台服务器上,一旦服务器宕机服务就不可用,所以为了让服务高可用,分布式服务就出现了,将同一服务部署到多台机器上,即使其......
  • 876~877 redis、命令操作String&list
    2.字符串类型string1.存储:setkeyvalue127.0.0.1:6379>setusernamezhangsanOK2.获取:getkey127.0.0.1:6379>getusernam......