Redis系列:设置/移除键的过期时间

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 1. 数据库数量 默认情况下,Redis服务器有16个数据库,分别为db0~db15,如下图所示: 该数量是由配置文件中的databases选项决定的,默认值为16: 2.

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!


1. 数据库数量

默认情况下,Redis服务器有16个数据库,分别为db0~db15,如下图所示:

1

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

2

2. 切换目标数据库

默认情况下,我们执行的命令的目标数据库是db0,比如我们执行如下命令:

3

这个键值对会保存在数据库db0里,如下图所示:

4

如果想要切换目标数据库,可以使用SELECT命令,比如切换到db1,可以执行如下命令:

5

然后执行如下图所示的命令:

6

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

7

在实际使用时,建议遵循以下规范:

  • 各个应用使用不同的目标数据库
  • 1个应用尽量不要操作多个目标数据库

3. 设置/移除键的过期时间

Redis提供了7个和key的过期时间相关的命令,分别如下所示:

  • TTL
  • PTTL
  • EXPIRE
  • PEXPIRE
  • EXPIREAT
  • PEXPIREAT
  • PERSIST

接下来详细讲解每个命令的使用方法。

3.1 TTL

TTL是Time To Live的缩写,用来查看某个key的剩余生存时间,单位为秒。

如果key没有设置过期时间,返回-1。

如果key不存在,返回-2。

8

3.2 PTTL

PTTL和TTL类似,也是用来查看某个key的剩余生存时间,但单位为毫秒。

如果key没有设置过期时间,返回-1。

如果key不存在,返回-2。

9

3.3 EXPIRE

EXPIRE命令用来给指定的key设置过期时间,单位为秒。

如果过期时间设置成功,返回1。

如果key不存在,返回0。

10

3.4 PEXPIRE

PEXPIRE与EXPIRE类似,也是用来给指定的key设置过期时间,但单位为毫秒。

如果过期时间设置成功,返回1。

如果key不存在,返回0。

11

3.5 EXPIREAT

EXPIREAT命令用来给指定的key设置过期时间,但指定的是某个时间点秒数的UNIX时间戳。

如果过期时间设置成功,返回1。

如果key不存在,返回0。

可以使用如下Java代码获取秒数的时间戳:

System.out.println(LocalDateTime.now().plusMinutes(2).toEpochSecond(ZoneOffset.ofHours(8)));

12

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());

13

3.7 PERSIST

PERSIST命令用来移除指定key的过期时间。

如果过期时间移除成功,返回1。

如果key不存在或者key没有设置过期时间,返回0。

14

4. 源码及参考

黄健宏 《Redis设计与实现》

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-05-07
本文作者:申城异乡人
本文来自:“掘金”,了解相关信息可以关注“掘金”

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
NoSQL Linux Redis
Linux Redis 服务设置开机自启动
【9月更文挑战第2天】在 Linux 系统中,可使用两种方法设置 Redis 开机自启动:一是通过创建 `redis.service` 文件并利用 systemd 进行管理,包括定义服务参数和启动脚本;二是编辑 `/etc/rc.local` 文件,在其中添加启动命令。推荐使用 systemd 方法,因为它更符合现代 Linux 系统的设计理念。设置完成后,可通过 `sudo systemctl status redis.service` 检查服务状态。
265 3
|
3月前
|
存储 缓存 NoSQL
【Azure Redis 缓存 Azure Cache For Redis】如何设置让Azure Redis中的RDB文件暂留更久(如7天)
【Azure Redis 缓存 Azure Cache For Redis】如何设置让Azure Redis中的RDB文件暂留更久(如7天)
|
4月前
|
canal 缓存 NoSQL
Redis常见面试题(一):Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;先删除缓存还是先修改数据库,双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
Redis常见面试题(一):Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
|
3月前
|
NoSQL Redis
Redis——批量设置key的过期时间
Redis——批量设置key的过期时间
52 1
|
4月前
|
NoSQL 网络安全 Redis
Redis 密码设置和查看密码
【7月更文挑战第28天】
798 3
|
3月前
|
NoSQL 网络安全 Redis
用python安装redis并设置服务自启
用python安装redis并设置服务自启
25 0
|
3月前
|
NoSQL Redis
Redis——设置最大内存 | key淘汰机制
Redis——设置最大内存 | key淘汰机制
57 0
|
4月前
|
NoSQL Redis 数据安全/隐私保护
macos系统中redis如何设置密码
以上步骤应该可以帮助你在macOS系统的Redis服务中设置密码,确保你的数据存储更加安全。此外,确保你定期检查Redis安全性相关的最佳实践和更新,以保持你的服务安全可靠。
334 3
|
4月前
|
监控 NoSQL Redis
Redis性能优化问题之配置 Redis 的自动碎片整理功能,如何解决
Redis性能优化问题之配置 Redis 的自动碎片整理功能,如何解决
|
4月前
|
NoSQL Redis Windows
Windows设置Redis服务使其开机自启
Windows设置Redis服务使其开机自启
61 0
下一篇
无影云桌面