*Redis TOUCH 命令

TOUCH 用于更新指定键的最后访问时间,而不改变键的值。


*语法

TOUCH key [key ...]

*参数说明

参数 类型 必填 说明
key String 要更新的键名,支持多个

*返回值

  • Integer:成功更新访问时间的键的数量

*时间复杂度

O(N),N 为指定的键数量。


*示例

*基本用法

> SET mykey "hello"
OK
> TOUCH mykey
(integer) 1

*多个键

> SET key1 "a"
OK
> SET key2 "b"
OK
> TOUCH key1 key2 key3
(integer) 2

*键不存在

> TOUCH nonexist
(integer) 0

*常见错误

错误 原因 解决
ERR wrong number of arguments 未传入键名 至少传入一个 key

*最佳实践

  • 场景:手动触发 LRU/LFU 策略的键保活
  • 批量更新多个键的访问时间
  • 配合 OBJECT IDLETIME 使用

*FAQ

Q1: TOUCH 和 GET 有什么区别? A: TOUCH 只更新访问时间不返回值,GET 会返回值。

Q2: 键不存在时会计数吗? A: 不会,只统计实际存在的键。

Q3: 对设置了过期时间的键使用 TOUCH 会延长过期时间吗? A: 不会,TOUCH 只更新 LRU/LFU 相关的访问时间,不影响 TTL