前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >设置Redis中某个键的生存时间或过期时间以及过期删除策略

设置Redis中某个键的生存时间或过期时间以及过期删除策略

原创
作者头像
一凡sir
发布于 2023-09-20 01:27:53
发布于 2023-09-20 01:27:53
1.9K0
举报
文章被收录于专栏:技术成长技术成长

建议先关注、点赞、收藏后再阅读。

在Redis中,可以通过使用EXPIRE命令或PEXPIRE命令来设置键的生存时间或过期时间。

  • 使用EXPIRE命令设置键的过期时间,单位为秒。命令格式为:
代码语言:txt
AI代码解释
复制
EXPIRE key seconds

例如,设置键mykey的过期时间为60秒:

代码语言:txt
AI代码解释
复制
EXPIRE mykey 60
  • 使用PEXPIRE命令设置键的过期时间,单位为毫秒。命令格式为:
代码语言:txt
AI代码解释
复制
PEXPIRE key milliseconds

例如,设置键mykey的过期时间为60000毫秒(即60秒):

代码语言:txt
AI代码解释
复制
PEXPIRE mykey 60000

除了上述命令,还可以通过使用SET命令结合EX参数或PX参数进行设置键的过期时间。命令格式为:

  • 使用EX参数设置键的过期时间,单位为秒。命令格式为:
代码语言:txt
AI代码解释
复制
SET key value EX seconds

例如,设置键mykey的值为myvalue,并且过期时间为60秒:

代码语言:txt
AI代码解释
复制
SET mykey myvalue EX 60
  • 使用PX参数设置键的过期时间,单位为毫秒。命令格式为:
代码语言:txt
AI代码解释
复制
SET key value PX milliseconds

例如,设置键mykey的值为myvalue,并且过期时间为60000毫秒(即60秒):

代码语言:txt
AI代码解释
复制
SET mykey myvalue PX 60000

需要注意的是,使用EXPIREPEXPIRE命令设置键的过期时间之后,键到期时会自动被删除。而使用SET命令结合EX参数或PX参数进行设置键的过期时间后,可以使用PERSIST命令来移除键的过期时间,使得键永不过期。

Redis提供了四种过期键删除策略,分别是:

  1. 定时删除策略(volatile-lru): Redis使用LRU算法淘汰过期键中的一部分,确保有足够的空间继续存放新的键。但是,该策略可能导致一些过期键无法被删除,从而占用一部分内存。
  2. 惰性删除策略(volatile-lfu): Redis使用LFU算法淘汰过期键中的一部分,该算法根据键被访问的频率决定被淘汰的优先级。这是一种相对平衡的策略,但是算法的复杂度较高,可能影响性能。
  3. 最少时间删除策略(volatile-ttl): Redis根据键的过期时间从近到远对键进行排序,并淘汰最近过期的一部分。这种策略保留了剩余键中的最新数据,但是复杂度较高,需要维护一个有序集合。
  4. 随机删除策略(volatile-random): Redis随机选择一部分过期键并对其进行删除。这种策略是一种权衡,可以在性能和内存利用率之间取得平衡。

需要注意的是,上述策略只适用于有过期时间的键(即设置了EXPIREPEXPIRE命令的键),对于没有设置过期时间的键,Redis不会对其进行删除操作。此外,当过期键策略无法删除足够多的键时,Redis会采用内存淘汰策略来释放内存空间。

Redis使用了基于定时策略和惰性删除策略来实现过期键的删除。

基于定时策略:

  • Redis会为每个设置了过期时间的键创建一个定时器,定时器会根据键的过期时间来决定何时删除这个键。
  • Redis默认每秒执行10次定时器的检查,检查是否有键过期需要删除。
  • 过期键的删除操作都在定时器回调中进行,删除操作会将过期键从数据库中立即删除,释放内存空间。

惰性删除策略:

  • Redis在每次获取或修改键值的操作时,会检查键是否过期,并在检查到过期键时删除它,并在这之后返回给客户端。
  • 这样的删除策略可以保证过期键被及时删除,但是对于很长时间未被访问的键可能会存在过期但未被删除的情况。因为只有在对键进行操作时才会检查是否过期。

删除策略对Redis性能的影响:

  • 基于定时策略的定时器会以每秒10次的频率执行,这是一个固定的开销。
  • 当过期键较多时,删除操作会占用一定的系统资源,可能会影响Redis的性能。
  • 如果使用了持久化存储,过期键的删除操作也会增加持久化的负担,影响IO性能。
  • 惰性删除策略在访问较少的键时可能导致键的过期延迟,需要等到有访问时才检查并删除过期键。

删除策略对Redis的性能影响主要体现在删除操作的开销上,同时也受到过期键数量和访问模式等因素的影响。在大多数情况下,Redis的删除策略是可以保证性能和内存使用的良好平衡的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
面试必问:redis过期key删除和内存淘汰策略
众所周知,Redis是一种内存级kv数据库,所有的操作都是在内存里面进行,定期通过异步操作把数据库数据flush到硬盘上进行保存。因此它是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作。虽然是内存数据库,但是其数据可以持久化,而且支持丰富的数据类型。
高性能架构探索
2022/08/25
4890
面试必问:redis过期key删除和内存淘汰策略
面试官:Redis的key过期如何删除?有哪些内存淘汰策略?
随着业务的发展,数据量激增,Redis作为缓存数据库,其内存使用量不可避免地会增长。但内存终究是有限的,一台服务器的内存也就8G或者16G,redis也不可能全部占用,因为一部分内存也需要用来维持系统运行。那redis又该怎么处理内存占用过多的情况呢?
程序员小义
2024/05/11
4310
面试官:Redis的key过期如何删除?有哪些内存淘汰策略?
Redis的过期策略&内存淘汰策略
Redis作为当下最受欢迎的NoSQL数据库之一,在很多场景下都会使用到;Redis的存储分为内存存储、磁盘存储和log文件三部分,重启后,Redis可以从磁盘重新将数据加载到内存中,这些可以通过配置文件对其进行配置,正因为这样,Redis才能实现持久化
Kevinello
2022/08/19
8670
Redis的过期策略&内存淘汰策略
Redis进阶-Redis对于过期键的三种清除策略
单位是秒。返回1成功,0表示key已经设置过过期时间或者不存在。 如果想消除超时则使用persist key。如果希望采用绝对超时,则使用expireat命令。
小小工匠
2021/08/17
1.2K1
Redis的过期键删除策略和数据逐出策略
在实际生产环境中使用Redis时,偶然会觉得Redis的内存占用要比自己预想的大。事实上,Redis占用的内存除了保存键值对所需的开销外,还有一些运行时产生的额外内存,包括:
全菜工程师小辉
2019/08/16
1.7K0
《Redis设计与实现》读书笔记(十二) ——Redis键的生存时间与过期时间
《Redis设计与实现》读书笔记(十二) ——Redis键的生存时间与过期时间 (原创内容,转载请注明来源,谢谢) 1、设置方式 在redis客户端,可以通过expire命令设置某个键的以秒为单位的生存时间(TTL),也可以用pexpire设置以毫秒为单位的时间。setex命令可以在对字符串对象设置值的时候,同时设置过期时间,但是其只针对字符串对象可以使用。在经过指定时间后,服务器会自动删除生存时间为0的键值对。 在客户端,还可以通过expireat或pexpireat命令,设置数据库键的过期时间。这个时间
用户1327360
2018/03/07
1.1K0
《Redis设计与实现》读书笔记(十二)  ——Redis键的生存时间与过期时间
Redis过期key删除策略以及内存淘汰策略
众所周知,Redis是一种内存级kv数据库,所有的操作都是在内存里面进行,定期通过异步操作把数据库数据flush到硬盘上进行保存。因此它是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作。虽然是内存数据库,但是其数据可以持久化,而且支持丰富的数据类型。
高性能架构探索
2021/04/13
2.1K0
Redis的过期键删除策略看这一篇就足够了
众所周知,Redis是缓存中间件领域中的无冕之王。 来个灵魂拷问:缓存解决能解决什么问题呢? 把热数据存放到存取速度快的存储介质中,通过空间换时间的方式来提升数据的存取速度。 存取速度快的存储介质都会贵一些,贵的东西肯定要省着点用。 那么,如何节省缓存空间呢? 让缓存过期。 当前时间到达过期时间时,将删除缓存,减少空间的占用; 如果缓存空间已满,则根据配置的maxmemory-policy来决定如何腾出新的空间以继续提供读写服务。
烟雨平生
2023/09/05
1.4K0
Redis的过期键删除策略看这一篇就足够了
【云原生进阶之PaaS中间件】第一章Redis-1.4过期策略
        除了string独有设置过期时间的方法,其他类型都需依靠expire方法设置时间,若:
江中散人_Jun
2023/10/16
1850
【云原生进阶之PaaS中间件】第一章Redis-1.4过期策略
Redis过期策略以及淘汰机制
Redis中可以通过expire设置键的过期,那么Redis又是什么时候删除键的呢?
用户7386338
2020/10/10
5260
redis内存满了怎么办?让你玩懂8种内存淘汰策略
我们知道redis是一个非常常用的内存型数据库,数据从内存中读取是它非常高效的原因之一,那么但是如果有一天,「redis分配的内存满了怎么办」?遇到这个面试题不要慌,这种问题我们分为两角度回答就可以:
Java宝典
2021/04/02
2.4K0
redis内存满了怎么办?让你玩懂8种内存淘汰策略
Redis之过期key的淘汰及缓存淘汰策略解读
我们都知道在Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除。想象一下里面有一个专门删除过期数据的线程,如果数据已过期就立马删除。这个时候可以思考一下,会不会因为同一时间太多的 key 过期,以至于线程忙不过来。同时因为 Redis 是单线程的,删除的时间也会占用线程的处理时间,如果删除的太过于繁忙,会不会导致线上读写指令出现卡顿。
一个风轻云淡
2023/10/15
3440
【Redis】Redis魔法:揭秘Key的自动消失术——过期删除机制解析
在Redis中,过期删除是一项重要的功能,允许用户为特定的Key设置过期时间,当Key的存活时间超过设定的过期时间时,Redis会自动删除这个Key。本文将深入探讨Redis中Key的过期删除机制,包括实现原理、配置参数、应用场景等方面的内容。
人不走空
2024/02/21
1.4K0
【Redis】Redis魔法:揭秘Key的自动消失术——过期删除机制解析
面试官:聊一聊Redis过期淘汰策略
Redis 是一个开源的使用ANSI C编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
做棵大树
2024/04/09
6790
Redis内存淘汰和过期删除策略原理分析
Redis是一个内存键值对数据库,所以对于内存的管理尤为重要。Redis内部对于内存的管理主要包含两个方向,过期删除策略和数据淘汰策略。 思考:
政采云前端团队
2023/10/25
4810
Redis内存淘汰和过期删除策略原理分析
Redis的过期策略和内存淘汰策略及LRU算法详解
设置key的过期时间。超时后,将会自动删除该key。在Redis的术语中一个key的相关超时是volatile的。
JavaEdge
2020/09/07
2.3K0
熟悉Redis吗,那Redis的过期键删除策略是什么
对于Redis,我们业务开发一般都只关心Redis键值对的查询、修改操作,可能因为懒或者只想能用就行,呵呵。很少关心键值对存储在什么地方、键值对过期了会怎么样、Redis有没什么策略处理过期的键、Redis处理过期键又有什么作用?但这些问题却是Java程序员在Redis上进阶的必备知识,不要埋怨Java要学习的系统知识为什么这么多,因为这些确确实实是程序员进阶所必须掌握的。我们往下看看~
JavaSouth南哥
2024/05/08
3250
熟悉Redis吗,那Redis的过期键删除策略是什么
Redis详解(十一)------ 过期删除策略和内存淘汰策略
  ②、设置完一个键的过期时间后,到了这个时间,这个键还能获取到么?假如获取不到那这个键还占据着内存吗?
IT可乐
2020/06/02
1.5K0
Redis详解(十一)------ 过期删除策略和内存淘汰策略
Redis淘汰删除策略
Redis数据库作为缓存系统使用通常只保留部分的热点数据。当热点数据超过Redis设置的内存总大小时就需要删除陈旧的数据,为键空间设计一套高效的过期策略将使得应用程序的内存需求更可控。本文介绍Redis的键淘汰策略以及在Redis内部是如何实现的。
一生何求
2019/12/21
1.5K0
Redis 键的生存时间和过期时间
Redis的键可以设置生存时间和过期时间,这个过期时间是如何设置的呢,可以简单看下:
Meteors
2021/12/08
1K0
推荐阅读
相关推荐
面试必问:redis过期key删除和内存淘汰策略
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文