本篇博客是Redis系列的第6篇,主要讲解以下内容:

  1. 数据库数量
  2. 切换目标数据库
  3. 设置键的过期时间
  4. 移除键的过期时间

本系列的前5篇可以点击以下链接查看:

Redis系列(一):Redis简介及环境安装

Redis系列(二):Redis的5种数据结构及其常用命令

Redis系列(三):Redis的持久化机制(RDB、AOF)

Redis系列(四):Redis的复制机制(主从复制)

Redis系列(五):Redis的过期键删除策略

1. 数据库数量

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

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

2. 切换目标数据库

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

set message "Hello,Redis"

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

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

SELECT 1

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

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

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

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

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

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

  1. TTL
  2. PTTL
  3. EXPIRE
  4. PEXPIRE
  5. EXPIREAT
  6. PEXPIREAT
  7. PERSIST

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

3.1 TTL

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

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

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

3.2 PTTL

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

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

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

3.3 EXPIRE

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

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

如果key不存在,返回0。

3.4 PEXPIRE

PEXPIREEXPIRE类似,也是用来给指定的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

PEXPIREATEXPIREAT类似,用来给指定的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设计与实现》

https://redis.io/commands

Redis系列(六):设置/移除键的过期时间的更多相关文章

  1. Redis 过期键的设置、获取和删除过期时间

    Redis 过期键的设置.获取和删除过期时间 转自http://blog.51cto.com/littledevil/1813956 设置过期 默认情况下键是没有生存时间的,也就是永不过期,除非清空内 ...

  2. Redis设置和更新Key的过期时间

    EXPIRE key seconds 为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除. 在 Redis 中,带有生存时间的 key 被称为『易失的』(volati ...

  3. springBoot2.0+redis+fastJson+自定义注解实现方法上添加过期时间

    springBoot2.0集成redis实例 一.首先引入项目依赖的maven jar包,主要包括 spring-boot-starter-data-redis包,这个再springBoot2.0之前 ...

  4. 满足java对redis的所有操作,token,验证码过期时间等

    很实用 链接在此  https://www.cnblogs.com/edisonfeng/p/3571870.html System.out.println("=============== ...

  5. redis入门指南(三)—— 事务、过期时间、SORT命令、消息通知与管道

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 事务 1.redis中的事务由一组命令的集合组成,要么都执行,要么都不执行,同时redis的事务 ...

  6. 设置一个严格的SESSION过期时间

    认识一:当我们需要更改session生存时间的时候通行的做法是更改php.ini文件中 1: ; Name of the session (used as cookie name). 2: sessi ...

  7. Redis系列六:redis相关功能

    一. 慢查询原因分析 与mysql一样:当执行时间超过阀值,会将发生时间耗时的命令记录 redis命令生命周期:发送 排队 执行 返回慢查询只统计第3个执行步骤的时间 预设阀值:两种方式,默认为10毫 ...

  8. Redis系列六 - 浅谈如何设计秒杀系统

    前言 设计一个系统之前,我们肯定要先确认系统业务场景是怎样的,下面就以某电商平台上的秒杀活动为场景,一起来探讨一个秒杀系统改如何去设计. 场景 我们现在要卖100件纸尿布,按照系统的用户量及以往经验来 ...

  9. Redis系列(六)-SortedSets设计技巧

    阅读目录: 介绍 Score占位 更多位信息 总结 介绍 Redis Sorted Sets是类似Redis Sets数据结构,不允许重复项的String集合.不同的是Sorted Sets中的每个成 ...

随机推荐

  1. k8s yaml示例

    Kind选择 https://kubernetes.io/zh/docs/concepts/workloads/controllers/ Pod示例 apiVersion : v1 #版本v1 kin ...

  2. c++缓冲区 vBufferChar.hpp

    //vbuffer_char.hpp //vov #ifndef V_BUFFER_CHAR_HPP #define V_BUFFER_CHAR_HPP #include <iostream&g ...

  3. Git应用详解第十讲:Git子库:submodule与subtree.md

    前言 前情提要:Git应用详解第九讲:Git cherry-pick与Git rebase 一个中大型项目往往会依赖几个模块,git提供了子库的概念.可以将这些子模块存放在不同的仓库中,通过submo ...

  4. Daily Scrum 12/29/2015

    Process: Zhaoyang: Add the Time bar feature in the APP and complete the Speech API. Yandong: Do some ...

  5. Eight HDU - 1043 (双向BFS)

    记得上人工智能课的时候老师讲过一个A*算法,计算估价函数(f[n]=h[n]+g[n])什么的,感觉不是很好理解,百度上好多都是用逆向BFS写的,我理解的逆向BFS应该是从终点状态出发,然后把每一种状 ...

  6. c++类初始化列表初探

    目录 1 初始化和赋值 1.1 结论 2 构造函数初始化列表 2.1 结论 3 必须使用初始化列表的情况 3.1 结论 4 成员初始化顺序 5 参考资料 1 初始化和赋值 初始化:创建一个对象并赋予一 ...

  7. vue2.x学习笔记(十二)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12592256.html. 组件基础 组件化是vue的一个重要特性,也是vue学习中非常重要的一个知识点. 基础示例 ...

  8. MergeSort归并排序和利用归并排序计算出数组中的逆序对

    首先先上LeetCode今天的每日一题(面试题51. 数组中的逆序对): 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. ...

  9. tensorflow版线性回归

    import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf def linearregression(): X ...

  10. 一、Go语言由来与关键时间线

    Go语言,又称作Golang,是Google在2009年11月开源的开发语言.是一门静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言. Go是罗伯特·格瑞史莫(Robert Griesemer ...