Redis系列(六):设置/移除键的过期时间
本篇博客是Redis系列的第6篇,主要讲解以下内容:
- 数据库数量
- 切换目标数据库
- 设置键的过期时间
- 移除键的过期时间
本系列的前5篇可以点击以下链接查看:
Redis系列(三):Redis的持久化机制(RDB、AOF)
1. 数据库数量
默认情况下,Redis服务器有16个数据库,分别为db0~db15,如下图所示:

该数量是由配置文件中的databases选项决定的,默认值为16:

2. 切换目标数据库
默认情况下,我们执行的命令的目标数据库是db0,比如我们执行如下命令:
set message "Hello,Redis"
这个键值对会保存在数据库db0里,如下图所示:

如果想要切换目标数据库,可以使用SELECT命令,比如切换到db1,可以执行如下命令:
SELECT 1
然后执行如下图所示的命令:

此时该键值对会保存在db1里,如下图所示:

在实际使用时,建议遵循以下规范:
- 各个应用使用不同的目标数据库
- 1个应用尽量不要操作多个目标数据库
3. 设置/移除键的过期时间
Redis提供了7个和key的过期时间相关的命令,分别如下所示:
- TTL
- PTTL
- EXPIRE
- PEXPIRE
- EXPIREAT
- PEXPIREAT
- PERSIST
接下来详细讲解每个命令的使用方法。
3.1 TTL
TTL是Time To Live的缩写,用来查看某个key的剩余生存时间,单位为秒。
如果key没有设置过期时间,返回-1。
如果key不存在,返回-2。


3.2 PTTL
PTTL和TTL类似,也是用来查看某个key的剩余生存时间,但单位为毫秒。
如果key没有设置过期时间,返回-1。
如果key不存在,返回-2。

3.3 EXPIRE
EXPIRE命令用来给指定的key设置过期时间,单位为秒。
如果过期时间设置成功,返回1。
如果key不存在,返回0。

3.4 PEXPIRE
PEXPIRE与EXPIRE类似,也是用来给指定的key设置过期时间,但单位为毫秒。
如果过期时间设置成功,返回1。
如果key不存在,返回0。

3.5 EXPIREAT
EXPIREAT命令用来给指定的key设置过期时间,但指定的是某个时间点秒数的UNIX时间戳。
如果过期时间设置成功,返回1。
如果key不存在,返回0。
可以使用如下Java代码获取秒数的时间戳:
System.out.println(LocalDateTime.now().plusMinutes(2).toEpochSecond(ZoneOffset.ofHours(8)));

3.6 PEXPIREAT
PEXPIREAT与EXPIREAT类似,用来给指定的key设置过期时间,但指定的是点毫秒数的UNIX时间戳。
如果过期时间设置成功,返回1。
如果key不存在,返回0。
可以使用如下Java代码获取毫秒数的时间戳:
System.out.println(System.currentTimeMillis());
System.out.println(LocalDateTime.now().plusMinutes(2).toInstant(ZoneOffset.ofHours(8)).toEpochMilli());

3.7 PERSIST
PERSIST命令用来移除指定key的过期时间。
如果过期时间移除成功,返回1。
如果key不存在或者key没有设置过期时间,返回0。

4. 源码及参考
黄健宏 《Redis设计与实现》
Redis系列(六):设置/移除键的过期时间的更多相关文章
- Redis 过期键的设置、获取和删除过期时间
Redis 过期键的设置.获取和删除过期时间 转自http://blog.51cto.com/littledevil/1813956 设置过期 默认情况下键是没有生存时间的,也就是永不过期,除非清空内 ...
- Redis设置和更新Key的过期时间
EXPIRE key seconds 为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除. 在 Redis 中,带有生存时间的 key 被称为『易失的』(volati ...
- springBoot2.0+redis+fastJson+自定义注解实现方法上添加过期时间
springBoot2.0集成redis实例 一.首先引入项目依赖的maven jar包,主要包括 spring-boot-starter-data-redis包,这个再springBoot2.0之前 ...
- 满足java对redis的所有操作,token,验证码过期时间等
很实用 链接在此 https://www.cnblogs.com/edisonfeng/p/3571870.html System.out.println("=============== ...
- redis入门指南(三)—— 事务、过期时间、SORT命令、消息通知与管道
写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 事务 1.redis中的事务由一组命令的集合组成,要么都执行,要么都不执行,同时redis的事务 ...
- 设置一个严格的SESSION过期时间
认识一:当我们需要更改session生存时间的时候通行的做法是更改php.ini文件中 1: ; Name of the session (used as cookie name). 2: sessi ...
- Redis系列六:redis相关功能
一. 慢查询原因分析 与mysql一样:当执行时间超过阀值,会将发生时间耗时的命令记录 redis命令生命周期:发送 排队 执行 返回慢查询只统计第3个执行步骤的时间 预设阀值:两种方式,默认为10毫 ...
- Redis系列六 - 浅谈如何设计秒杀系统
前言 设计一个系统之前,我们肯定要先确认系统业务场景是怎样的,下面就以某电商平台上的秒杀活动为场景,一起来探讨一个秒杀系统改如何去设计. 场景 我们现在要卖100件纸尿布,按照系统的用户量及以往经验来 ...
- Redis系列(六)-SortedSets设计技巧
阅读目录: 介绍 Score占位 更多位信息 总结 介绍 Redis Sorted Sets是类似Redis Sets数据结构,不允许重复项的String集合.不同的是Sorted Sets中的每个成 ...
随机推荐
- k8s yaml示例
Kind选择 https://kubernetes.io/zh/docs/concepts/workloads/controllers/ Pod示例 apiVersion : v1 #版本v1 kin ...
- c++缓冲区 vBufferChar.hpp
//vbuffer_char.hpp //vov #ifndef V_BUFFER_CHAR_HPP #define V_BUFFER_CHAR_HPP #include <iostream&g ...
- Git应用详解第十讲:Git子库:submodule与subtree.md
前言 前情提要:Git应用详解第九讲:Git cherry-pick与Git rebase 一个中大型项目往往会依赖几个模块,git提供了子库的概念.可以将这些子模块存放在不同的仓库中,通过submo ...
- Daily Scrum 12/29/2015
Process: Zhaoyang: Add the Time bar feature in the APP and complete the Speech API. Yandong: Do some ...
- Eight HDU - 1043 (双向BFS)
记得上人工智能课的时候老师讲过一个A*算法,计算估价函数(f[n]=h[n]+g[n])什么的,感觉不是很好理解,百度上好多都是用逆向BFS写的,我理解的逆向BFS应该是从终点状态出发,然后把每一种状 ...
- c++类初始化列表初探
目录 1 初始化和赋值 1.1 结论 2 构造函数初始化列表 2.1 结论 3 必须使用初始化列表的情况 3.1 结论 4 成员初始化顺序 5 参考资料 1 初始化和赋值 初始化:创建一个对象并赋予一 ...
- vue2.x学习笔记(十二)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12592256.html. 组件基础 组件化是vue的一个重要特性,也是vue学习中非常重要的一个知识点. 基础示例 ...
- MergeSort归并排序和利用归并排序计算出数组中的逆序对
首先先上LeetCode今天的每日一题(面试题51. 数组中的逆序对): 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. ...
- tensorflow版线性回归
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf def linearregression(): X ...
- 一、Go语言由来与关键时间线
Go语言,又称作Golang,是Google在2009年11月开源的开发语言.是一门静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言. Go是罗伯特·格瑞史莫(Robert Griesemer ...