touch
TOUCH
最終アクセス時刻(access time)を現在時刻に変更
使い方は touch key [type] です。
📍 type は string/list/set/zset/hash/stream のいずれかです。
ent811 から type が追加されました。ぜひ使用してください。
最終アクセス時刻を現在時刻に変更します。
最終アクセス時刻の確認は
OBJECT idletime key または
DEBUG object key コマンドで確認できます。
このコマンドは Redis サーバーの最大メモリ使用ポリシー(MAXMEMORY POLICY)と関連があります。
最大メモリ使用ポリシーに関連する 6 つのパラメータのうち volatile-lru、allkeys-lru は
最終アクセス時刻が古いキーから削除する LRU(Least Recently Used) アルゴリズムでキーを削除します。
そのため特定のキーをできるだけ遅く削除したい場合は TOUCH コマンドで最終アクセス時刻を現在時刻に変更します。
Redis サーバー version 3.2.0 までは
TTL key または
TYPE key コマンドで最終アクセス時刻を変更できました。
しかし version 3.2.1 からはこれらのコマンドでは変更できず、最終アクセス時刻を変更する TOUCH コマンドが新たに作られました。
もちろん
GET key コマンドでも
変更できますが、最終アクセス時刻を変更する目的だけで使うにはサーバーやクライアントに負荷がかかるため TOUCH コマンドを使いましょう。
存在しないキーを指定してもエラーにはせず無視します。  
戻り値は touch したキーの個数です。
最大メモリ使用ポリシー(MAXMEMORY POLICY)の簡単な説明はこちらをご覧ください。
Example
| コマンド> | set key value |
| 結果> | 1 |
| コマンド> | object idletime key string |
| 結果> | 5 |
| コマンド> | touch key string |
| 結果> | 1 |
| コマンド> | object idletime key string |
| 結果> | 2 |
構文
TOUCH key [key ...] [type]
- このコマンドは version 3.2.1 から使用できます。
- 時間計算量は O(N) です。N はキー(key)の個数です。
- ent811 で type を追加。