当前位置: 首页 > news >正文

redis client.ttl(key)

对应 Redis 的 TTL 命令:

bash

复制

下载

TTL key

使用示例

1. 基本用法

java

复制

下载

try (Jedis jedis = jedisPool.getResource()) {long ttl = jedis.ttl("user:1001:session");if (ttl > 0) {System.out.println("键将在 " + ttl + " 秒后过期");} else if (ttl == -1) {System.out.println("键存在,但未设置过期时间");} else if (ttl == -2) {System.out.println("键不存在或已过期");}
} catch (JedisException e) {System.err.println("Redis 操作失败: " + e.getMessage());
}
2. 结合 expire 使用

java

复制

下载

// 设置键并添加过期时间
jedis.setex("temp:data", 300, "value"); // 5分钟后过期// 检查剩余时间
long remainingTime = jedis.ttl("temp:data");
System.out.println("剩余时间: " + remainingTime + " 秒");

常见问题

Q1: 为什么返回 -2
  • 键可能从未存在,或已过期被 Redis 自动删除。

  • 注意:Redis 不区分“键不存在”和“键已过期”,统一返回 -2

Q2: 如何获取毫秒级精度的 TTL?

使用 pttl 方法:

java

复制

下载

long pttl = jedis.pttl("mykey"); // 返回毫秒
Q3: ttl 和 exists 的区别?
  • ttl 返回具体时间信息,能区分“永久键”和“不存在键”。

  • exists 只返回键是否存在(1 或 0),不关心过期时间。


关键注意事项

  1. 精度问题

    • ttl 返回秒级整数(向下取整)。

    • 例如,剩余时间 1.9 秒时返回 1

  2. 键过期时机
    Redis 的过期删除是惰性 + 定期的,ttl 返回值可能不是实时精确的。

  3. 性能
    ttl 是 O(1) 操作,对性能无显著影响。


最佳实践

java

复制

下载

// 安全获取 TTL(带异常处理)
try (Jedis jedis = jedisPool.getResource()) {long ttl = jedis.ttl(key);switch ((int) ttl) {case -2:// 键不存在逻辑break;case -1:// 键永久有效逻辑break;default:// 键即将过期逻辑if (ttl < 30) {jedis.expire(key, 60); // 自动续期}}
} catch (JedisException e) {// 处理网络或服务端错误
}

总结

场景返回值处理建议
键存在且有 TTL> 0根据业务判断是否续期。
键存在但无 TTL-1无需处理,或主动设置过期时间。
键不存在/已过期-2可能需要重新创建键。
Redis 服务异常抛异常捕获 JedisException 并重试。

http://www.xdnf.cn/news/105175.html

相关文章:

  • day001
  • 高等数学第一章---函数与极限(1.2 数列的极限2)
  • Cluely 使用指南:一款重新定义“作弊”的AI工具
  • URP-UGUI相关知识
  • 220V转直流非隔离传感器供电电源芯片WT5105
  • 国际化不生效
  • 【数字图像处理】机器视觉(1)
  • QT之Q_PROPERTY介绍以及在QWidget中的用法
  • 操作系统学习笔记
  • 2025年阅读论文的常用工具推荐
  • STM32F407 的通用定时器与串口配置深度解析
  • CSRF攻击原理与解决方法
  • 强化学习算法笔记【AMP】
  • 渗透测试中的信息收集:从入门到精通
  • 心智模式VS系统思考
  • 海外产能达产,威尔高一季度营收利润双双大增
  • 1.5软考系统架构设计师:架构师的角色与能力要求 - 超简记忆要点、知识体系全解、考点深度解析、真题训练附答案及解析
  • 【ROS2】机器人操作系统安装到Ubuntu简介
  • deepseek-php-client开源程序是强力维护的 PHP API 客户端,允许您与 deepseek API 交互
  • 第十五届蓝桥杯 2024 C/C++组 艺术与篮球
  • 【redis】哨兵模式
  • MACD红绿灯副图指标使用技巧,绿灯做多,MACD趋势线,周期共振等实战技术解密
  • 信息系统项目管理工程师备考计算类真题讲解六
  • DeepSeek+Mermaid:轻松实现可视化图表自动化生成(附实战演练)
  • 2025 Java 框架痛点全解析:如何避免性能瓶颈与依赖混乱
  • TI芯片ADS1299的代替品LHE7909其应用领域
  • kali安装切换jdk1.8.0_451java8详细教程
  • Docker配置带证书的远程访问监听
  • 一个关于相对速度的假想的故事-6
  • LeetCode每日一题4.23