设置过期时间指的是在key上设置一个时间,使得key在这个时间之内存活,过了这个时间,则删除该key及其对应的值;redis中一般设置过期时间,而非使用del命令消除元素;
一旦设置了过期时间,这个key只能被命令清除、删除或者重写其内容。这些命令包含del、set、getset以及所有的*store命令。这些命令只能改变key对应的value的存储值而不改变过期时间的设置。
如:使用incr改变key对应的value、使用lpush添加一个新的元素到lists中、使用hset设置field对应value的值等等,这些操作都不影响已经对key设置的过期时间的属性。
1.通过expire命令实现:demo:expire key 10 ----->为给定的key设置过期时间为10秒
2.通过setex命令实现:demo:setex key 10 value ----->设置key的值为value,存活10秒--->针对key的value为String类型;
以上两种方式均是针对的key,为其设置过期时间;想要对value中的某一部分数据(其他数据类型)进行过期时间的设置,则需通过其他的方式进行;
设置了过期时间的key依然可以使用persist命令重新持久化。(PERSIST命令可以移除一个键的过期时间)
注意:rename命令重命名key后,原始的key对应属性全部发生转移。如果key设置了过期时间,并且尚未被删除,使用rename命令重新命名后,该过期时间将转移到新的key上。
如果调用expire或者pexpire时传给一个负值作为参数以及expireat或者pexpireat调用的时候时间戳已经过去,那么该key将直接被删除而不是等待过期。
刷新过期时间
对一个设置了过期时间的key仍然可以调用expire更新其过期时间。
返回值
设置过期时间会返回一个整数值;
1)如果过期时间被设置成功,返回1;
2)如果设置失败或者key不存在,则返回0;