Redis 提供了几个命令来帮助我们查看和管理长时间未被访问的 key:
- DBSIZE:这个命令返回当前数据库的 key 的数量。
- INFO keyspace:这个命令返回所有数据库的 key 的数量、过期 key 的数量和一些其他统计信息。
- SCAN:这个命令用来迭代数据库中的 key,可以配合 MATCH 选项来匹配特定模式的 key,配合 COUNT 选项来限制每次迭代返回的 key 的数量。
要查看长时间未被访问的 key,可以使用 SCAN
命令配合 OBJECT IDLETIME
命令来查看 key 的空闲时间。
redis-cli --scan --pattern "*" | xargs -L 1 -I '{}' bash -c 'TTL=$(redis-cli OBJECT IDLETIME "{}" | awk "{{print $1}}"); if [ "$TTL" -gt "36000" ]; then echo "Key: {}, Idle Time: {} seconds" "{}" "$TTL"; fi'
如有密码, 2处redis-cli
后须加-a {密码}
这个命令会扫描所有的 key,并且使用 OBJECT IDLETIME 来获取每个 key 的空闲时间,然后输出空闲时间超过 36000秒(10个小时) 的 key。