在使用redis作为缓存存储值的时候,一般都是需要设置值的过期时间,否则日积月累的垃圾数据就会占用大量的内存空间;
设置过期时间可以分开设置也可以一条语句设置
分开设置
先设置值再设置过期时间,这种方式极端情况下会出现问题,毕竟是非原子操作。
// 两条命令分别设置值和过期时间
// 时间单位:秒
("key",6);
// 时间单位:毫秒
//("key",6000L);
合并设置
一条命令同时设置值和过期时间,推荐使用此方式。
// 一条语句设置值和过期时间
// 时间单位:秒
("key",6,"value");
// 时间单位:毫秒
//("key",6000L,"value");
一般主要包括2种处理过期方式,其中expire都是以秒为单位,pexpire都是以毫秒为单位的。
第一种
设置值的有效时间,例如:有效时间60秒;更新value后过期时间会重新计算,例如:有效时间60秒,第59秒更新了value后,过期时间还是60秒后。
expire (key seconds) // 为给定 key 设置过期时间,以秒计。
pexpire (key milliseconds) // 设置 key 的过期时间以毫秒计。
第二种
设置值的到期时间,根据时间的时间戳设置,例如:2021年6月1号上午10点10分10秒到期,就填此时刻的时间戳
// 设置 key 过期时间的时间戳(unix timestamp) 单位:秒时间戳,
// 例如:2021年6月1号上午10点10分10秒到期 timestamp=1622513410
expireat (key timestamp)
// 设置 key 过期时间的时间戳(unix timestamp) 单位:毫秒时间戳
// 例如:2021年6月1号上午10点10分10秒到期 timestamp=1622513410000
pexpireat (key milliseconds-timestamp)