单机Redis的存储极限取决于你的机器内存大小,通常一台64位系统能用几百GB内存,Redis就能存那么多数据,但实际极限在100GB到几TB之间,受限于内存和配置。最大容量可以通过redis-benchmark工具测试,逐步增加数据量直到内存满或QPS掉下来;性能边界测用memtier_benchmark或redis-benchmark,模拟高并发读写,看吞吐量和延迟变化,比如命令:redis-benchmark -h 127.0.0.1 -p 6379 -n 1000000 -c 50 -t set,get。
CSDN博客用户分享
我用一台128G内存的机器跑单机Redis,存了大概90GB数据后开始swap,性能直线下降。极限测试方法:先用redis-cli填充数据,比如用pipeline批量SET 1亿条key-value,每条1KB大小,看内存占用到顶。性能边界:用sysbench或redis-benchmark跑并发SET/GET,监控RSS内存和CPU,QPS到10万左右时延迟开始飙升,单机基本到头了。别忘了调overcommit_memory=1和maxmemory-policy。
阿里云开发者社区帖子
单机Redis最大容量理论上无上限,但实际受物理内存限制,我们测试一台256G内存机器,塞进200GB数据(键值对平均500字节),一切正常,但写放大后fork RDB时卡住。测容量:写脚本循环SET,直到INFO memory里used_memory_rss接近总内存。性能边界:用memtier_benchmark --clients=100 --threads=10 --requests=1000000 --data-size=1024 --key-pattern=K:N,观察P99延迟超过10ms就算边界,单机Redis并发1000左右QPS稳定。
知乎高赞回答
单机Redis存量极限是你的内存减去OS和其他进程,大概80-90%可用。我们一台64G机器极限存50GB左右,超过就开始OOM。测试最大容量:用python脚本或redis-mass-insertion工具塞数据,边塞边用INFO命令看used_memory。性能边界测试超级简单:redis-benchmark -t set,get -r 1000000 -n 5000000 -c 100 -d 100,跑几次看平均QPS和latency,内存吃紧时GET就慢了,单机峰值QPS也就20-50万,看你的SSD和CPU。
GitHub issue讨论
在32核128G机器上,Redis 6.2单机存了150GB数据,还能跑,但AOF rewrite时CPU 100%。容量测试:逐步增加dataset大小,从10GB到max,用docker run -it --rm redis:alpine redis-benchmark填充。边界性能:并发压到500 clients,QPS峰值38万,P95 latency 2ms,内存90%用完后掉到10万QPS。注意碎片率,fragmentation ratio >1.5就得优化。
腾讯云社区经验
实测单机Redis(Intel Xeon 64G内存)最大存80GB稳定,超过100GB fork子进程耗时超长。测容量法:批量导入JSON数据,监控free -h和redis INFO。性能边界:压测工具twemproxy+redis-benchmark,模拟1万QPS读写,观察CPU/内存/磁盘IO,单机到极限时磁盘IO瓶颈明显,建议加SSD。
FAQ
Q: 单机Redis超过内存极限会怎样?
A: 会触发maxmemory eviction策略,删除旧数据,或者直接OOM杀进程,数据丢失风险高。
Q: 怎么快速填充数据测试容量?
A: 用redis-benchmark -c 1 -n 10000000 -t set -d 1024,或者python脚本pipeline批量SET。
Q: 性能边界只看QPS吗?
A: 不,看QPS、延迟(P99)、内存使用率、CPU和磁盘IO,全指标一起。
Q: 集群能突破单机极限吗?
A: 能,Redis Cluster分片多机,总容量乘节点数,但管理复杂,单机简单测试够用。