查找redis永不过期的key

keys *阻塞进程,消耗比较大,慎用

#!/bin/bash

# 设置要遍历的 Redis 数据库数量
db_count=16

# 输出文件名
output_file="never_expire_keys.txt"

# 循环遍历 0 到 15 的数据库
for (( db=0; db<$db_count; db++ )); do
    echo "正在检查数据库 $db 的永不过期键..."
    # 连接到当前数据库
    redis-cli select $db
    
    # 查询当前数据库中的所有键,并检查它们的 TTL
    redis-cli keys "*" | while read -r key; do
        ttl=$(redis-cli ttl "$key")
        
        # 如果 TTL 等于 -1,表示键永不过期
        if [ "$ttl" -eq -1 ]; then
            # 将永不过期的键和它所属的数据库编号写入文件
            echo "$db:$key" >> "$output_file"
        fi
    done
done

echo "永不过期的键已写入到 $output_file 文件中"
posted @ 2024-03-16 15:21  朝阳1  阅读(300)  评论(0)    收藏  举报