Redis 过期键的设置、获取和删除过期时间
Redis 过期键的设置、获取和删除过期时间
设置过期
默认情况下键是没有生存时间的,也就是永不过期,除非清空内存。
设置的键的生存时间也很容易,可以通过4个命令设置(任选一即可):EXPIRE、PEXPIRE、EXPIREAT、PEXPIREAT命令,这4个命令看起来不同但是背后实现原理都是一样的。常用的其实就是EXPIRE和PEXPIRE这两个,前者是以秒设置过期时间,后者是以毫秒。
以秒来设置,设置aaa这个键1秒后过期,1秒中以后再获取aaa这个键则返回空。

以毫秒来设置,设置bbb这个键10毫秒后过期。

| 命令 | 说明 | 
| EXPIREkey #s | 将KEY的生存时间设置为#秒 | 
| PEXPIREkey #ms | 将KEY的生存时间设置为#毫秒 | 
| EXPIREATkey timestamp | 将KEY的生存时间设置为UNIX时间戳,单位为秒 | 
| PEXPIREATkey timestamp | 将KEY的生存时间设置为UNIX时间戳,单位为毫秒 | 
上面这4个命令只是单位和表现形式上的不同,但实际上EXPIRE、PEXPIRE以及EXPIREAT命令的执行最后都会使用PEXPIREAT来实行。
比如使用EXPIRE来设置KEY的生存时间为N秒,那么后台是如何运行的呢:
它会调用PEXPIRE命令把N秒转换为M毫秒
然后获取当前的UNIX时间单位也是毫秒
把当前UNIX时间加上M毫秒传递给PEXPREAT
给键设置了过期时间,这个时间保存在一个字典里,也是键值结构,键是一个指针,指向真实的键,而值这是一个长整型的UNIX时间。
获取键的过期时间
如何查看一个键的生存时间多多少呢?可以使用ttl key来获取(以秒来显示),如下图:

另外还有一个命令是pttl key这个是以毫秒显示。
清除键的过期时间
可以使用PERSIST命令移除一个键的过期时间,如下图:

过期时间返回值的说明
通过ttl可以获取一个键的整数返回值
| 值 | 说明 | 
| -2 | 过期且已删除 | 
| -1 | 没有过期时间设置,即永不过期 | 
| >0 | 表示距离过期还有多少秒或者毫秒 | 
Redis 过期键的设置、获取和删除过期时间的更多相关文章
- springboot项目:登录 登录aop拦截 使用Redis与cookie 进行设置获取清除操作
		
登录.登出: 第一步:在pom文件中引入依赖 <dependency> <groupId>org.springframework.boot</groupId> &l ...
 - Redis系列(五):Redis的过期键删除策略
		
本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略. 本系列的前4篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数 ...
 - Redis的过期键删除策略
		
文章首发于公众号:蘑菇睡不着,欢迎来看看 前言 Redis 中都是键值对的存储形式,键都是字符串类型的,而值有很多种类型,如 string.list.hash.set.sorted set等类型.当设 ...
 - redis中关于过期键的删除策略
		
我们已经了解到了Redis是一种内存数据库,Redis中数据都是以key-value的形式存储在内存中.由Redisserver来维护和管理这部分内存,内存是何足珍贵,不须要的数据或者是已经使用过的无 ...
 - redis 过期键的删除策略?
		
1.定时删除:在设置键的过期时间的同时,创建一个定时器 timer). 让定时器在键 的过期时间来临时,立即执行对键的删除操作. 2.惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的 ...
 - 你应该知道的Redis过期键和过期策略
		
今天,我和大家分享一篇关于 Redis 有关过期键的内容,主要有四个内容: 如何设置过期键 如何取消设置的过期时间 过期键的过期策略是怎样的 RDB.AOF 和复制对过期键的处理又是怎样的 设置键的生 ...
 - Redis 过期键删除策略
		
Redis 中数据库键的过期时间都保存在过期字典中,当一个键过期了,Redis 存在三种不同的删除策略:定时删除.惰性删除和定期删除 定时删除 定义 在设置键的过期时间的同时创建一个计时器,让定时器在 ...
 - redis学习笔记——Redis过期键的删除策略
		
Redis过期键的删除策略 对于过期键一般有三种删除策略 定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作: 惰性删除:放任键过期 ...
 - redis过期键删除策略以及大key删除方法
		
今天遇到了一个前同事挖的坑,刷新缓存中商品信息时先让key过期,然后从数据库里取最新数据然后再放到缓存中,他是这样写的 redisTemplate.expire(CacheConst.GOOGS_PR ...
 
随机推荐
- [USACO15FEB]Superbull (最小生成树)
			
题目链接 Solution 基本上就是个板子. 因为 \(n\) 很小,只有 \(2000\),所以直接暴力建图,然后跑最小生成树就好了. Code #include<bits/stdc++.h ...
 - java面试题之select、poll和epoll的区别
			
消息传递方式: select:内核需要将消息传递到用户空间,需要内核的拷贝动作: poll:同上: epoll:通过内核和用户空间共享一块内存来实现,性能较高: 文件句柄剧增后带来的IO效率问题: s ...
 - 用户认证系统 django.contrib.auth模块
			
一 导入auth模块 from django.contrib.auth.models import User from django.contrib import auth auth模块的操作针对的就 ...
 - 关于在IE下面promise兼容的解决办法
			
下载es6-promise就可以解决这个问题 import ES6Promise from "es6-promise" if(!window.Promise) { console. ...
 - Wmap5 测试80端口  Your port 80 is actually used by :Server: Microsoft-HTTPAPI/2.0
			
问题:win7系统! 在wamp5的apache启动不了: 目录下点击[测试80端口]的时候提示:Your port 80 is actually used by : Server: Microsof ...
 - SpringBoot重点详解--使用Junit进行单元测试
			
目录 添加依赖与配置 ApplicationContext测试 Environment测试 MockBean测试 Controller测试 情况一 情况二 方法一 方法二 本文将对在Springboo ...
 - 【Visual Studio】让用VS2012/VS2013编写的程序在XP中顺利运行(转)
			
原文转自 http://blog.csdn.net/asanscape/article/details/38752655 微软为了推销自家平台,默认配置下VS2012和VS2013编写的应用程序只能在 ...
 - buffer和cache怎么让你们解释的那么难理解?
			
对于一个即将踏上“系统运维”或者更加高大尚的工作“系统调优”,如果这不跟这两哥们搞好关系了,坑的不只有内存,更坑的是你拿着调优的钱却干着随时被调的活.因为作为一个系统运维人员来说监控和优化IO性能这是 ...
 - Yii createCommand CURD操作
			
本文用作工作记录,也许有人会问为什么不用 Yii 的 Model 去操作 DB,原因很简单,Yii 的 Model 写法上是方便了很多,但是会执行多余的 SQL,打开 Yii 的执行 log 就会发现 ...
 - LeetCode OJ--Remove Duplicates from Sorted Array
			
http://oj.leetcode.com/problems/remove-duplicates-from-sorted-array/ 删除数组中的重复元素,要求为原地算法. 进行一遍遍历,记录下一 ...