Redis进阶-过期时间EXPIRE

目录

▪️ 基础命令介绍:

▪️ 初步了解:

▪️ 过期时间(秒) EXPIRE、检查过期时间 TTL

▪️ 过期时间(毫秒) PEXPIRE 

▪️ 取消过期时间 PEISIST


▪️ 基础命令介绍:

        https://blog.csdn.net/qq_42816268/article/details/115178561

▪️ 初步了解:

          1、可以为key设置过期时间,redis会根据其删除策略对过期的key进行删除

                1)常见删除策略:

                       ▪️ 立即删除(不属于redis):立即删除可以保证内存中数据的新鲜度,保证key过期了就可以马上被删除,其所占用的CPU也会被释放,但是对CPU不是很友好,redis的事件处理对时间事件的处理方式是无序链表,查找一个key的时间复杂度为O(n),不适合处理大量时间事件。

                       ▪️ 惰性删除:key过期后并不会被马上删除,当key被访问时,会先检查该key是否过期,如果过期了就删除,但是对于一些经常不被访问的key,会长久的存在内存中,浪费资源。

                       ▪️ 定期删除:每隔一段时间执行一次删除操作。

                  2)惰性删除+定期删除是最中和的方法。

          2、设置的时间可以是微秒,也可以是秒。

          3、当使用WATCH监控被设置有效期的key时,如果在事务执行前,该key失效了,WATCH命令并不会认为该key被改变,则不会中断事务的执行。

          4、若某个key设置了过期时间后,执行一些改变该key的命令(SET、GETSET、DEL等),那么之前对该key设置的过期时间将会取消。

          5、若只是执行对value进行操作的命令(INCR、LPUSH、HSET等),那么过期时间不会被取消。

 

▪️ 过期时间(秒) EXPIRE、检查过期时间 TTL

       1)语法:EXPIRE key 秒 、TTL key

       2)语意:为某个存在的key设置过期时间,到期后该key会被删除。   

                       检查某个key的过期时间

       3)要点:若某个key设置了过期时间后,执行一些改变该key的命令(SET、GETSET、DEL等),那么之前对该key设置的过期时间将会取消

127.0.0.1:6379> SET checkCode 1414      // 设置checkCode = 1414
OK
127.0.0.1:6379> EXPIRE checkCode 500    // 设置checkCode的过期时间为500秒,设置成功返回值1
(integer) 1
127.0.0.1:6379> TTL checkCode           // 5秒后用TTL key 命令查看该key的过期时间,还有495秒
(integer) 495
127.0.0.1:6379> EXPIRE checkCode 50     // 重新设置checkCode的过期时间为50秒
(integer) 1
127.0.0.1:6379> TTL checkCode           // 2秒后查看其过期时间,还有48秒
(integer) 48
127.0.0.1:6379> GET checkCode2          // 不存在checkCode2这个key
(nil)
127.0.0.1:6379> EXPIRE checkCode2 500   // 为不存在的key设置过期时间,返回0,设置失败
(integer) 0
127.0.0.1:6379> TTL checkCode2          // TTL检查不存在的key,返回-2,表示该key不存在
(integer) -2
127.0.0.1:6379> SET checkCode3 1415     // 设置 checkCode3 = 1415,不给其设置过期时间
OK
127.0.0.1:6379> TTL checkCode3          // 用TTL检查没有设置过期时间的key,返回-1
(integer) -1

 

   

▪️ 过期时间(毫秒) PEXPIRE 

       1)语法:PEXPIRE key 毫秒 

       2)语意:为某个存在的key设置过期时间,到期后该key会被删除。  

同EXPIRE,只是把秒换成了毫秒

▪️ 取消过期时间 PEISIST

       1)语法:PERSIST key

       2)语意:取消对应key的过期时间

       3)要点:

                   (1)若某个key设置了过期时间后,执行一些改变该key的命令(SET、GETSET、DEL等),那么之前对该key设置的过期时间也会取消。

                   (2)若只是执行对value进行操作的命令(INCR、LPUSH、HSET等),那么过期时间不会被取消。

                   (3)若某个key不存在或者之前没有被设置过期时间,则会返回0,取消成功则会返回1。

127.0.0.1:6379> SET checkCode 1515    // 设置 checkCode = 1515
OK
127.0.0.1:6379> TTL checkCode         // 查看其过期时间,返回该key并没有被设置过期时间
(integer) -1
127.0.0.1:6379> PERSIST checkCode     // 对没有设置过期时间的key用PERSIST命令,返回0
(integer) 0
127.0.0.1:6379> EXPIRE checkCode 100  // 对key为checkCode设置100秒的过期时间
(integer) 1
127.0.0.1:6379> TTL checkCode         // 8秒后检查该key的过期时间,还有92秒
(integer) 92
127.0.0.1:6379> PERSIST checkCode     // 取消checkCode的过期时间,成功,返回1
(integer) 1
127.0.0.1:6379> TTL checkCode         // 用TTL检查该key的过期时间,返回-1,表示该key虽然存在,但是没有被设置过期时间
(integer) -1
127.0.0.1:6379> GET checkCode         // checkCode = 1515
"1515"

     

▪️ 在指定UNIX时间戳过期 EXPIREAT、PEXPIREAT

       1)语法:EXPIREAT key 时间戳(秒) 、 PEXPIREAT key 时间戳(毫秒)

       2)语意:为指定key设置过期时间,在指定时间戳后过期

127.0.0.1:6379> SET checkCode 1414                // 设置checkCode = 1414
OK
127.0.0.1:6379> EXPIREAT checkCode 1617797660     // checkCode 将会在时间戳为1617797660之后过期(时间戳单位为秒)
(integer) 1 
127.0.0.1:6379> TTL checkCode                     // 距离过期时间还有100秒
(integer) 100
127.0.0.1:6379> PEXPIREAT checkCode 1617797660000 // checkCode 将会在时间戳为1617797660000之后过期(时间戳单位为毫秒)
(integer) 1
127.0.0.1:6379> TTL checkCode                     // 还有68秒
(integer) 68

      

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值