redis的key什么时候失效
-
Redis的key在什么情况下会失效?
Redis的key可以通过设置过期时间来使其在一定时间后自动失效。在Redis中,key的失效可以有两种方式:
-
设置过期时间:通过设置key的过期时间(Expiration),让key在达到过期时间之后自动被删除。可以使用
EXPIRE命令来设置key的过期时间,例如:EXPIRE key_name seconds其中,
key_name是要设置过期时间的key,seconds是过期时间(单位为秒)。 -
使用带有过期时间的数据结构:在使用Redis的数据结构时,可以选择存储带有过期时间的数据结构,例如使用
SETEX命令将带有过期时间的值存储到key中,例如:SETEX key_name seconds value其中,
key_name是要存储带有过期时间的key,seconds是过期时间,value是要存储的值。
除了以上两种方式外,还可以使用
TTL命令来查看key的剩余存活时间,即距离过期还有多长时间。需要注意的是,一旦key失效后,对该key的操作将返回空值。同时,在Redis中,失效的key不会立即从内存中删除,而是等待下一次访问时才会进行删除操作。
总结起来,Redis的key在设置了过期时间后会在达到过期时间之后自动失效,也可以使用带有过期时间的数据结构来存储数据。
1年前 -
-
Redis的key可以通过设置过期时间来使其在一定时间后自动失效。有三种情况下Redis的key会失效:
-
Key到达过期时间:当设置了过期时间后,当当前时间超过key的过期时间时,key会自动失效,被Redis删除。
-
Key被主动删除:当用户通过DEL命令或者UNLINK命令手动删除key时,key会立即失效。
-
Key被替换:当用户执行SET命令或者其他写操作命令,将一个存在的key进行覆盖写操作时,原来的key会被新的key替换,并且失效。
-
Key被内存淘汰:当Redis的内存空间不够时,会根据一定的算法来选择一些已经过期的或者使用频率较低的key进行淘汰,以释放内存空间。
-
Redis重启:当Redis服务重新启动时,所有的key都会被清空,即使设置了过期时间,也会失效。
需要注意的是,Redis的过期时间是以秒为单位进行设置的,可以通过EXPIRE命令或者SET命令的EX参数来设置过期时间。过期时间可以是一个整数值,也可以是一个时间戳。同时,Redis也提供了命令来获取key的剩余过期时间,可以通过TTL命令或者PTTL命令来获取。
1年前 -
-
Redis的key有多种方式可以设置失效时间,失效时间可以通过以下几种方式设置:
- 使用EXPIRE命令:EXPIRE命令可以为指定的key设置一个指定的过期时间,单位为秒。例如,可以通过以下命令为key设置过期时间为10秒:
EXPIRE key 10在设置了过期时间后,当key过期时,该key将会被自动删除。
- 使用PEXPIRE命令:PEXPIRE命令与EXPIRE命令相似,可以为指定的key设置过期时间,但时间单位为毫秒。例如,可以通过以下命令为key设置过期时间为500毫秒:
PEXPIRE key 500同样,当key过期时,该key将会被自动删除。
- 使用TTL命令:TTL命令可以查询指定key的剩余过期时间。例如,可以通过以下命令查询key1的剩余过期时间:
TTL key1如果返回-2,则说明指定的key不存在;如果返回-1,则说明指定的key存在,但没有设置过期时间;如果返回大于0的数值,则说明指定的key存在,并且还有剩余过期时间。
- 使用PERSIST命令:PERSIST命令可以移除指定key的过期时间,使其成为永久有效的。例如,可以通过以下命令将key1设置为永久有效:
PERSIST key1在执行PERSIST命令后,key1将不再具有过期时间,保持永久有效。
- 使用SET命令结合EX命令:SET命令可以设置key的值,并且可以指定EX参数来同时设置过期时间,单位为秒。例如,可以通过以下命令设置key2的值为value,并且设置过期时间为60秒:
SET key2 value EX 60在执行SET命令时,可以同时指定EX参数来设置过期时间。
- 使用SET命令结合PX命令:SET命令还可以使用PX参数来设置过期时间,单位为毫秒。例如,可以通过以下命令设置key3的值为value,并且设置过期时间为300毫秒:
SET key3 value PX 300需要注意的是,如果对一个已经设置了过期时间的key执行SET命令或者SET命令结合EXPIRE/PEXPIRE命令,之前设置的过期时间会被覆盖。而如果对一个未设置过期时间的key执行EXPIRE/PEXPIRE命令,那么该key会被设置过期时间。
在Redis中,keys会在以下几个情况下失效:
- 当key的过期时间到期后,Redis会自动将其删除。
- 当对一个key执行了DEL命令,在该命令执行后,key会立即被删除。
- 当对一个key执行了SET命令,并且设置了过期时间,当过期时间到期后,key会被删除。
- 当对一个key执行了EXPIRE/PEXPIRE命令设置过期时间,当过期时间到期后,key会被删除。
- 当对一个key执行了PERSIST命令,该key之前设置的过期时间会被移除,key变为永久有效。
- 当Redis执行内存管理操作时,如果需要释放内存,可能会删除一些过期的key。
需要注意的是,如果一个key被设置了过期时间,但在过期之前被取出或者修改了值,那么该key的过期时间会被重新计算。因此,在使用Redis时,需要根据具体需求合理设置key的过期时间。
1年前