本篇博客是Redis系列的第6篇,主要讲解如下内容:html
本系列的前5篇能够点击如下连接查看:java
Redis系列(二):Redis的5种数据结构及其经常使用命令shell
Redis系列(三):Redis的持久化机制(RDB、AOF)数据库
Redis系列(四):Redis的复制机制(主从复制)服务器
默认状况下,Redis服务器有16个数据库,分别为db0~db15,以下图所示:设计
该数量是由配置文件中的databases
选项决定的,默认值为16:3d
默认状况下,咱们执行的命令的目标数据库是db0,好比咱们执行以下命令:code
set message "Hello,Redis"
这个键值对会保存在数据库db0里,以下图所示:
若是想要切换目标数据库,能够使用SELECT
命令,好比切换到db1,能够执行以下命令:
SELECT 1
而后执行以下图所示的命令:
此时该键值对会保存在db1里,以下图所示:
在实际使用时,建议遵循如下规范:
Redis提供了7个和key的过时时间相关的命令,分别以下所示:
接下来详细讲解每一个命令的使用方法。
TTL
是Time To Live的缩写,用来查看某个key的剩余生存时间,单位为秒。
若是key没有设置过时时间,返回-1。
若是key不存在,返回-2。
PTTL
和TTL
相似,也是用来查看某个key的剩余生存时间,但单位为毫秒。
若是key没有设置过时时间,返回-1。
若是key不存在,返回-2。
EXPIRE
命令用来给指定的key设置过时时间,单位为秒。
若是过时时间设置成功,返回1。
若是key不存在,返回0。
PEXPIRE
与EXPIRE
相似,也是用来给指定的key设置过时时间,但单位为毫秒。
若是过时时间设置成功,返回1。
若是key不存在,返回0。
EXPIREAT
命令用来给指定的key设置过时时间,但指定的是某个时间点秒数的UNIX时间戳。
若是过时时间设置成功,返回1。
若是key不存在,返回0。
能够使用以下Java代码获取秒数的时间戳:
System.out.println(LocalDateTime.now().plusMinutes(2).toEpochSecond(ZoneOffset.ofHours(8)));
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());
PERSIST
命令用来移除指定key的过时时间。
若是过时时间移除成功,返回1。
若是key不存在或者key没有设置过时时间,返回0。
黄健宏 《Redis设计与实现》