Redis內存使用控制方法
通過maxmemory
參數限制Redis使用的最大內存,防止內存溢出??稍?code>redis.conf配置文件中設置(如maxmemory 4GB
),或通過命令行動態調整(CONFIG SET maxmemory 4GB
)。若未設置或設置為0,64位系統默認不限制內存,32位系統最多使用3GB。
當內存達到maxmemory
限制時,通過淘汰策略清理數據以騰出空間。常見策略及適用場景:
選擇緊湊、高效的數據結構減少內存占用:
hash-max-ziplist-entries
(默認64)和hash-max-ziplist-value
(默認512)參數,當哈希表的成員數不超過前者且每個成員值長度不超過后者時,采用緊湊的ziplist存儲,節省內存;list-max-ziplist-entries
(默認512)和list-max-ziplist-value
(默認64)設置ziplist存儲條件;set-max-intset-entries
(默認512)參數,當集合元素全部為整數且數量不超過該值時,采用intset存儲。EXPIRE
命令設置過期時間(如SET key1 value1 EX 3600
表示1小時后過期),讓Redis自動清理;對于大規模數據,通過**分片(Sharding)將數據分布到多個Redis實例,或使用集群(Cluster)**自動分片并實現高可用,降低單機內存壓力。
INFO memory
命令查看used_memory
(已使用內存)、used_memory_rss
(物理內存占用)、maxmemory
(最大內存)等指標;或通過redis-cli --stat
實時監控內存變化;redis-cli --bigkeys
命令查找占用內存大的key,針對性優化或刪除。