首页 > 数据库 >Redis过期删除策略

Redis过期删除策略

时间:2023-12-28 10:55:33浏览次数:26  
标签:策略 删除 过期 Redis 惰性 key CPU

定时删除;

惰性删除;

定期删除;

定时删除策略是怎么样的?

定时删除策略的做法是,在设置 key 的过期时间时,同时创建一个定时事件,当时间到达时,由事件处理器自动执行 key 的删除操作。

定时删除策略的优点:

可以保证过期 key 会被尽快删除,也就是内存可以被尽快地释放。因此,定时删除对内存是最友好的。
定时删除策略的缺点:

在过期 key 比较多的情况下,删除过期 key 可能会占用相当一部分 CPU 时间,在内存不紧张但 CPU 时间紧张的情况下,将 CPU 时间用于删除和当前任务无关的过期键上,无疑会对服务器的响应时间和吞吐量造成影响。所以,定时删除策略对 CPU 不友好。

惰性删除策略是怎么样的?

惰性删除策略的做法是,不主动删除过期键,每次从数据库访问 key 时,都检测 key 是否过期,如果过期则删除该 key。

惰性删除策略的优点:

因为每次访问时,才会检查 key 是否过期,所以此策略只会使用很少的系统资源,因此,惰性删除策略对 CPU 时间最友好。
惰性删除策略的缺点:

如果一个 key 已经过期,而这个 key 又仍然保留在数据库中,那么只要这个过期 key 一直没有被访问,它所占用的内存就不会释放,造成了一定的内存空间浪费。所以,惰性删除策略对内存不友好。

定期删除策略是怎么样的?

定期删除策略的做法是,每隔一段时间「随机」从数据库中取出一定数量的 key 进行检查,并删除其中的过期key。
定期删除策略的优点:

通过限制删除操作执行的时长和频率,来减少删除操作对 CPU 的影响,同时也能删除一部分过期的数据减少了过期键对空间的无效占用。
定期删除策略的缺点:

内存清理方面没有定时删除效果好,同时没有惰性删除使用的系统资源少。
难以确定删除操作执行的时长和频率。如果执行的太频繁,定期删除策略变得和定时删除策略一样,对CPU不友好;如果执行的太少,那又和惰性删除一样了,过期 key 占用的内存不会及时得到释放。
#Redis 过期删除策略是什么?
前面介绍了三种过期删除策略,每一种都有优缺点,仅使用某一个策略都不能满足实际需求。

所以, Redis 选择「惰性删除+定期删除」这两种策略配和使用,以求在合理使用 CPU 时间和避免内存浪费之间取得平衡。

标签:策略,删除,过期,Redis,惰性,key,CPU
From: https://www.cnblogs.com/qcy-blog/p/17932242.html

相关文章

  • Redis事务
    其实redis的事务是个假事务,没有实现原子性,若要php支持事务,必须一起执行,其中incr会报错$status=$redis->multi()->lPush($key1,'1123')->lPush($key2,'2123')->incr("age","age")->exec();try{$redis=newRedis();$redis->c......
  • Redis进阶 使用Lua编写Redis脚本
    前面学习了Lua的基本语法,接下来是使用Lua编写脚本1.可以使用redis.call来调用redis命令使用redis.call会将redis命令返回的类型转换成对应的Lua数据类型。关系如下 与redis.call想类似的就是redis.pcall。【redis.call与redis.pcall的区别】当命令出错的时候,redis.pcall......
  • redis主从配置
    先学一个高端linux指令:catredis.conf|grep-v"^#"|grep-v"^$">msconf/redis-master.conf-v反向查找  "^#"以#开头的行   "^$"空行  将redis.conf去掉空行和以#开头的行,写入到msconf文件夹的redis-master.conf文件中 1、master-6380.conf配置文件主要......
  • redis哨兵
    Redis安装1、上传如下图:将redis-5.0.8.tar.gz包上传到目录:/apphome/下  2、解压如下图:解压压缩文件,执行命令:tar-zxvf redis-5.0.8.tar.gz,解压后生成新的文件夹redis-5.0.8  3、编译安装如下图:执行命令:make && make PREFIX=/apphome/redis  install3、......
  • 删除百度网盘我的应用数据文件夹
    原理在启用手机应用备份之后,这个文件夹会自动生成,然后不支持删除,不支持隐藏我们使用第三方百度网盘客户端,调用api,强制删除文件夹操作下载最新版BaiduPCS-Go获取Cookies参考官方说明文档使用百度Cookies来登录百度账号登录网页版百度网盘,F12打开控制台,跳转到网络(Network......
  • 后端技术:Redis进行数据缓存的两种方法
    在fastapi项目中Redis进行数据缓存的两种不同的方法的demo第一种方法:通过FastAPI应用状态准备文件:models/redis.py为fastapi的数据库模型文件importosimportaioredisfromaioredisimportRedisasyncdefsys_cache()->Redis:"""系统缓存:return:cac......
  • 怎么删除KVM虚拟机
    使用KVM创建的虚拟机确定不需要了可以使用以下方式删除找到改虚拟机对应的磁盘列出虚拟机磁盘,假如需要删除虚拟机名为CentOSES01213#virshdomblklistCentOSES01213目标源----------------------------------hda/kvm/CentOSES01213.qcow2hdb-删除虚......
  • redisearch入门
    redisearch1.安装docker安装dockerrun-d--nameredisearch-p8379:6379redislabs/redisearch2.验证验证search是否安装dockerexec-itredisearchredis-climodulelist1)1)"name"2)"ReJSON"3)"ver"4)(integer)99......
  • 06-redis的cluster集群
    一、介绍Redis集群是一个可以在多个Redis节点之间进行数据共享的设施(installation)。Redis集群不支持那些需要同时处理多个键的Redis命令,因为执行这些命令需要在多个Redis节点之间移动数据,并且在高负载的情况下,这些命令将降低Redis集群的性能,并导致不可预测的行为......
  • 07-Redis 多API开发实践
    Redis提供了各类开发语言的API,方便开发语言连接使用Redis。https://redis.io/clients官方网站提供了不同开发语言的API程序。网中,给我们提供了很多种Python连接redis的API,我们通常选择有“笑脸”并且带有“星号”的使用这里我们推荐使用redis-py.redis的多API支持python为......