• Redis系列(六):设置/移除键的过期时间


    本篇博客是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

  • 相关阅读:
    jQuery基础之让出$,与其他库共存
    什么是闭包
    绑定repeater时三目运算加特殊结果处理
    将同一张表出来的两部分内容再合成一张表
    后台往前台写弹窗代码不显示
    固定行列转换加分段统计
    js调用后台方法(如果你能容忍执行的后台方法变成一个常量)
    javascript遍历数组
    基于SpringMVC框架使用ECharts3.0实现折线图,柱状图,饼状图,的绘制(上篇)
    echarts
  • 原文地址:https://www.cnblogs.com/zwwhnly/p/12838809.html
Copyright © 2020-2023  润新知