Redis过期设置

摘要:
Redis支持按key设置过期时间,过期后值将被删除用TTL命令可以获取某个key值的过期时间127.0.0.1:6379˃setname"ghj1976"OK127.0.0.1:6379˃ttlname-1TTLkey以秒为单位,返回给定key的剩余生存时间。在Redis2.8以前,当key不存在,或者key没有设置剩余生存时间时,命令都返回-1。#不存在的keyredis˃FLUSHDBOKredis˃TTLkey-2#key存在,但没有设置剩余生存时间redis˃SETkeyvalueOKredis˃TTLkey-1#有剩余生存时间的keyredis˃EXPIREkey100861redis˃TTLkey10084下面命令先用EXISTS命令查看key值是否存在,然后设置了5秒的过期时间。127.0.0.1:6379˃setname"guohongjun"OK127.0.0.1:6379˃expireatname13168050001127.0.0.1:6379˃existsname0127.0.0.1:6379˃getname127.0.0.1:6379˃PEXPIREATkeymilliseconds-timestamp这个命令和EXPIREAT命令类似,但它以毫秒为单位设置key的过期unix时间戳,而不是像EXPIREAT那样,以秒为单位。

Redis支持按key设置过期时间,过期后值将被删除(在客户端看来是补删除了的)
用TTL命令可以获取某个key值的过期时间(-1表示永不过期)

127.0.0.1:6379> set name "ghj1976"
OK
127.0.0.1:6379> ttl name
(integer) -1

TTL key

以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

可用版本:
>= 1.0.0
时间复杂度:
O(1)
返回值:
当 key 不存在时,返回 -2 。
当 key 存在但没有设置剩余生存时间时,返回 -1 。
否则,以秒为单位,返回 key 的剩余生存时间。
在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。
# 不存在的 key

redis> FLUSHDB
OK

redis> TTL key
(integer) -2

# key 存在,但没有设置剩余生存时间

redis> SET key value
OK

redis> TTL key
(integer) -1

# 有剩余生存时间的 key

redis> EXPIRE key 10086
(integer) 1

redis> TTL key
(integer) 10084

下面命令先用EXISTS命令查看key值是否存在,然后设置了5秒的过期时间。5秒只有我们再回来查看。

127.0.0.1:6379> set name "ghj1976"
OK
127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> expire name 5
(integer) 1
127.0.0.1:6379> ttl name
(integer) 1
127.0.0.1:6379> ttl name
(integer) -2
127.0.0.1:6379> exists name
(integer) 0
127.0.0.1:6379> get name
(nil)

上在是直接设置多少秒后过期,你也可以设置在某个时间点过期,下面例子是设置2011-09-24 00:40:00过期。

127.0.0.1:6379> set name "guohongjun"
OK
127.0.0.1:6379> expireat name 1316805000
(integer) 1
127.0.0.1:6379> exists name
(integer) 0
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379>

PEXPIREAT key milliseconds-timestamp

这个命令和 EXPIREAT 命令类似,但它以毫秒为单位设置 key 的过期 unix 时间戳,而不是像 EXPIREAT 那样,以秒为单位。

可用版本:
>= 2.6.0
时间复杂度:
O(1)
返回值:
如果生存时间设置成功,返回 1 。
当 key 不存在或没办法设置生存时间时,返回 0 。(查看 EXPIRE 命令获取更多信息)
redis> SET mykey "Hello"
OK

redis> PEXPIREAT mykey 1555555555005
(integer) 1

redis> TTL mykey # TTL 返回秒
(integer) 223157079

redis> PTTL mykey # PTTL 返回毫秒
(integer) 223157079318

参考资料:

Redis 命令参考
http://www.redisdoc.com/en/latest/index.html

十五分钟介绍 Redis数据结构
http://blog.nosqlfan.com/html/3202.html

Redis系统性介绍
http://blog.nosqlfan.com/html/3139.html

Redis之七种武器
http://blog.nosqlfan.com/html/2942.html

试用redis
http://try.redis.io/

Redis 设计与实现
http://www.redisbook.com/en/latest/

免责声明:文章转载自《Redis过期设置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Git-配置difftool和mergetoolGCC 中的编译器堆栈保护技术(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python操作Redis方法速记

redis有5种数据结构,分别如下:5种数据结构python语言对5种数据结构的增删改查 全局函数 redis 连接 import redis pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connectio...

SpringBoot入门到出家

SpringBoot的Actuator监控 Actuator:对系统的监控 是SpringBoot提供的对应用系统监控的集成功能,可以对系统进行配置查看,相关功能统计等,在Spring Cloud中,主要完成微服务的监控,可以查看微服务之间的数据处理和调用,当出现异常时,可以快速定位问题所在 其功能和Dubbo的监控中心类似,区别就是一个需要专门部署,而...

136-如何访问redis数据库

//当我们使用Redis的时候,并没有注入Mapper,反而时注入了一个redisTemPlate @Autowired private RedisTemplate<Object,Object> redisTemplate; @Override public Integer queryUserCount() {...

解决redis-cli command not found问题

在使用其他服务器连接Redis服务器时,一般使用的语句是 【redis-cli -h IP -p port】 但是早上连接时报错:redis-cli command not found 在redis服务器上查出src下是存在redis-cli的 可以 # ./redis-cli 进入redis命令行 原因找到了更新。--------------------...

redis实现接口限流

总结一下,之前的一个项目需要做限流:秒杀商品的接口。 其他一些博客有很多文章介绍用谷歌的插件:guaue(针对于单机的),如果是微服务的话推荐使用:senilxxxxx啥来的。具体有些忘记了。 这篇文章分享的内容是用redis+自定义注解+拦截器是实现限流(相对简单的一种) 废话不多说:首先reids的配置类:RedisConfig import com....

centos安装redis并开启多个redis实例

1.下载安装包       下载地址 :  http://download.redis.io/releases/,去里面找对应的版本下载        例如  wget http://download.redis.io/releases/redis-5.0.0.tar.gz 2.解压       tar -zxf  redis-5.0.0.tar.gz  ...