设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间00 现在时间00 缓存数据 对自己狠一点,逼自己努力,再过几年你将会感谢今天发狠的自己、恨透今天懒惰自卑的自己。晚安!

对自己狠一点,逼自己努力,再过几年你将会感谢今天发狠的自己、恨透今天懒惰自卑的自己。晚安!

查看: 735|回复: 3

Redis如何设置过期时间

[复制链接]

  离线 

TA的专栏

  • 打卡等级:常驻代表
  • 打卡总天数:30
  • 打卡月天数:1
  • 打卡总奖励:368
  • 最近打卡:2025-12-11 13:51:09
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
346
主题
286
精华
0
金钱
1342
积分
696
注册时间
2023-2-11
最后登录
2025-12-11

发表于 2025-9-1 08:56:13 | 显示全部楼层 |阅读模式
Redis设置过期时间

在 Redis 中,我们可以为键(key)设置过期时间,以确保当指定的时间到达后,该键会自动被删除。
这种机制对于需要临时存储数据的应用场景非常有用,例如缓存、会话管理等。

1. 基本概念


  • 过期时间:指一个键在 Redis 中存在的有效时间,超过这个时间后,Redis 会自动删除该键以释放内存。
  • 生存时间(TTL):表示键剩余的存活时间,可以通过命令获取和设置。

2. 设置过期时间的方法

Redis 提供了多种命令用于设置或修改键的过期时间。以下是一些常用的命令:
a.
  1. EXPIRE key seconds
复制代码
功能:为指定的键设置过期时间,单位是秒。
返回值

  • 如果成功设置了过期时间,返回
    1. 1
    复制代码

  • 如果键不存在,返回
    1. 0
    复制代码

示例:
  1. redis> EXPIRE mykey 60
  2. (integer) 1
复制代码
此命令设置键
  1. mykey
复制代码
在 60 秒后过期。
b.
  1. PXPIRE key milliseconds
复制代码
功能:为指定的键设置以毫秒为单位的过期时间。
返回值

  • 如果成功设置了过期时间,返回
    1. 1
    复制代码

  • 如果键不存在,返回
    1. 0
    复制代码

示例:
  1. redis> PXPIRE mykey 5000
  2. (integer) 1
复制代码
此命令设置键
  1. mykey
复制代码
在 5000 毫秒(即 5 秒)后过期。
c.
  1. EXPIREAT key timestamp
复制代码
功能:为指定的键设置一个具体的过期时间,使用 Unix 时间戳(从 epoch 开始计算的秒数)。
返回值

  • 如果成功设置了过期时间,返回
    1. 1
    复制代码

  • 如果键不存在,返回
    1. 0
    复制代码

示例:
  1. redis> EXPIREAT mykey 1623859200
  2. (integer) 1
复制代码
此命令设置键
  1. mykey
复制代码
在 Unix 时间戳
  1. 1623859200
复制代码
(即 2021 年 6 月 14 日 00:00:00 UTC)过期。
d.
  1. PEXPIREAT key timestamp milliseconds
复制代码
功能:与
  1. EXPIREAT
复制代码
类似,但时间戳使用毫秒精度。
返回值

  • 如果成功设置了过期时间,返回
    1. 1
    复制代码

  • 如果键不存在,返回
    1. 0
    复制代码

示例:
  1. redis> PEXPIREAT mykey 1623859200000
  2. (integer) 1
复制代码
此命令设置键
  1. mykey
复制代码
在 Unix 时间戳
  1. 1623859200000
复制代码
(即 2021 年 6 月 14 日 00:00:00 UTC,毫秒精度)过期。
e. 使用
  1. SET
复制代码
命令设置过期时间

  • Redis 的
    1. SET
    复制代码
    命令支持在设置键值的同时指定过期时间。
  • 可以使用选项
    1. EX
    复制代码
    (以秒为单位)或
    1. PX
    复制代码
    (以毫秒为单位)来实现这一点。
示例:
  1. redis> SET mykey "hello" EX 60
  2. OK

  3. redis> SET mykey2 "world" PX 5000
  4. OK
复制代码

  • 第一个命令设置键
    1. mykey
    复制代码
    的值为
    1. "hello"
    复制代码
    ,并在 60 秒后过期。
  • 第二个命令设置键
    1. mykey2
    复制代码
    的值为
    1. "world"
    复制代码
    ,并在 5000 毫秒(即 5 秒)后过期。

3. 获取和修改 TTL

a.
  1. TTL key
复制代码
功能:返回指定键的剩余生存时间(以秒为单位)。
返回值

  • 如果键存在并且有设置过期时间,返回剩余的秒数。
  • 如果键不存在,返回
    1. -2
    复制代码

  • 如果键存在但没有设置过期时间,返回
    1. -1
    复制代码

示例:
  1. redis> SET mykey "test" EX 60
  2. OK

  3. redis> TTL mykey
  4. (integer) 58

  5. redis> TTL nonexistkey
  6. (integer) -2

  7. redis> TTL noexpirekey
  8. (integer) -1
复制代码
b.
  1. PTTL key
复制代码
功能:与
  1. TTL
复制代码
类似,但返回的是以毫秒为单位的剩余生存时间。
返回值

  • 如果键存在并且有设置过期时间,返回剩余的毫秒数。
  • 如果键不存在,返回
    1. -2
    复制代码

  • 如果键存在但没有设置过期时间,返回
    1. -1
    复制代码

示例:
  1. redis> SET mykey "test" PX 5000
  2. OK

  3. redis> PTTL mykey
  4. (integer) 4837
复制代码
c. 修改 TTL

  • 可以通过
    1. EXPIRE
    复制代码
    ,
    1. PXPIRE
    复制代码
    ,
    1. EXPIREAT
    复制代码
    , 或
    1. PEXPIREAT
    复制代码
    命令重新设置过期时间,从而修改键的剩余生存时间。
示例:
  1. redis> SET mykey "test" EX 60
  2. OK

  3. redis> TTL mykey
  4. (integer) 58

  5. redis> EXPIRE mykey 30
  6. (integer) 1

  7. redis> TTL mykey
  8. (integer) 29
复制代码
4. 过期键的删除策略

Redis 使用两种策略来处理过期的键:
a. 惰性删除(Lazy Deletion)

  • 过期的键不会立即被删除,而是在下一次访问该键时进行检查。如果发现键已过期,则会自动删除它。
  • 优点:减少了内存资源的消耗和 CPU 的使用率,因为不需要频繁扫描和删除过期键。
b. 积极删除(Active Deletion)

  • Redis 定期主动扫描数据库,寻找已经过期的键并删除它们。这种策略有助于避免过多的过期键堆积在内存中。
  • 优点:能够更及时地释放内存空间,保持较高的性能和稳定性。

5. 批量设置过期时间

在需要为多个键设置过期时间时,可以使用 Redis 的
  1. MULTI
复制代码
  1. EXEC
复制代码
命令将多个命令打包执行,从而实现原子性操作。
示例:
  1. redis> MULTI
  2. OK

  3. redis> EXPIRE key1 60
  4. QUEUED

  5. redis> EXPIRE key2 30
  6. QUEUED

  7. redis> EXEC
  8. 1) OK
  9. 2) OK
复制代码
6. 注意事项


  • 过期时间的精度:使用
    1. PX
    复制代码
    1. PEXPIREAT
    复制代码
    命令时,时间以毫秒为单位,可以提供更高的精度。
  • 时间戳的选择:在使用
    1. EXPIREAT
    复制代码
    1. PEXPIREAT
    复制代码
    时,需要确保提供的 Unix 时间戳是正确的,并且与当前的系统时间一致。
  • 内存和性能的影响:过多设置过期键可能会增加 Redis 的负载,特别是在高并发的情况下。因此,建议合理规划过期时间和 TTL 值,以优化资源使用。

总结

通过上述命令和策略,可以在 Redis 中灵活地设置、获取和修改键的生存时间(TTL)。这不仅有助于管理内存资源,还能提高应用的性能和稳定性。
在实际应用中,应根据具体的业务需求选择合适的过期时间和策略,以实现最佳的效果。
相关链接:

  • Redis 官方文档 - TTL
  • Redis 官方文档 - EXPIRE
  • Redis 官方文档 - PEXPIRE
通过以上内容,您可以全面了解如何在 Redis 中设置和管理键的生存时间。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持晓枫资讯。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
24
积分
28
注册时间
2022-12-25
最后登录
2022-12-25

发表于 2025-11-16 11:08:18 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
4
主题
4
精华
0
金钱
31
积分
26
注册时间
2022-12-27
最后登录
2023-1-23

发表于 7 天前 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
16
积分
12
注册时间
2022-12-29
最后登录
2022-12-29

发表于 7 天前 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表