*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。