«

Redis查看键数量

时间:2026-10-20 07:13     作者:emer     分类: 无


Redis查看键数量

引言

排查内存占用、统计缓存规模、清理过期数据前,先要看清当前库有多少键、某前缀下有多少键。不同命令代价差别很大,生产环境绝对不能用KEYS全量扫描,否则会阻塞Redis。

统计当前库总键数:DBSIZE

DBSIZE

返回当前数据库的键总数,是O(1)操作,底层直接读计数器,生产环境可安全使用。

切换库再统计

SELECT 2
DBSIZE

Redis默认0到15共16个逻辑库,DBSIZE只统计当前选中的库。

统计指定前缀数量:SCAN配合

SCAN 0 MATCH user:* COUNT 100

SCAN游标式分批遍历,不会阻塞主线程,配合MATCH按前缀过滤,COUNT是每批建议数量而非精确数量。

错误做法:KEYS全扫

# 生产禁止
KEYS user:*

KEYS是O(n)一次性遍历全部键,键多时会长时间阻塞,线上直接用可能引发雪崩。

估算内存与键分布

INFO keyspace

一次性返回所有库的键数量、过期键比例、平均TTL,适合整体巡检。

按类型统计

SCAN 0 TYPE string COUNT 500

SCAN支持按数据类型过滤,筛选string、hash、list等。

脚本批量统计前缀

redis-cli --scan --pattern 'order:*' | wc -l

命令行用--scan流式遍历,管道交给wc计数,比KEYS安全。

注意事项

总结

DBSIZE O(1)看当前库总数,SELECT切库分别统计,指定前缀用SCAN游标遍历,生产禁用KEYS全扫,INFO keyspace看全库分布和TTL,命令行用--scan加wc计数。核心是别用阻塞命令,SCAN分批处理允许重复需去重,多库分别统计,清理键同样走SCAN。

标签: Redis dbsize scan 键统计 缓存运维