Redis是一个开源的内存数据结构存储,可以用作数据库、缓存或消息队列。Redis支持多种数据类型,如字符串、列表、集合、散列、有序集合等。Redis还提供了一些高级功能,如事务、发布订阅、Lua脚本等。
在Redis中,每个键都可以设置一个过期时间,表示该键在多久后会被自动删除。这个功能可以用来实现一些临时数据的存储,如验证码、会话、缓存等。设置过期时间的命令有两种:EXPIRE和PEXPIRE。EXPIRE命令接受一个以秒为单位的整数参数,表示键的过期时间。PEXPIRE命令接受一个以毫秒为单位的整数参数,表示键的过期时间。例如:
上面的例子中,我们先设置了一个键name,然后分别用EXPIRE和PEXPIRE命令给它设置了10秒和5秒的过期时间。注意,如果对同一个键多次设置过期时间,后面的设置会覆盖前面的设置。
那么,如果我们想要获取一个键的过期时间或者剩余时间怎么办呢?Redis提供了两个命令来实现这个功能:TTL和PTTL。TTL命令返回一个以秒为单位的整数值,表示键的剩余时间。PTTL命令返回一个以毫秒为单位的整数值,表示键的剩余时间。例如:
上面的例子中,我们用TTL和PTTL命令分别获取了name键的剩余时间,分别是8秒和7986毫秒。注意,如果一个键没有设置过期时间,或者已经过期被删除了,这两个命令会返回-1。例如:
上面的例子中,我们先设置了一个键age,但没有给它设置过期时间,所以TTL命令返回-1。然后我们删除了name键,所以TTL命令也返回-1。
有时候,我们可能想要修改或者删除一个键的过期时间。Redis也提供了相应的命令来实现这个功能:PERSIST和EXPIREAT/PEXPIREAT。PERSIST命令可以移除一个键的过期时间,使其永久存在。EXPIREAT/PEXPIREAT命令可以用一个绝对的Unix时间戳来设置一个键的过期时间。