1、CPU
(1)開銷
RDB和AOF文件生成,屬於CPU密集型
(2)優化
(1)不做CPU綁定,也就是不把redis進程綁定在一個CPU上;
(2)不和CPU密集型服務部署在一起;
2、內存
(1)開銷
fork內存開銷,copy-on-write
(2)優化
(1)linux內核優化,禁止使用:echo never > /sys/kernel/mm/transparent_hugepage/enable,
禁止原因:如果父進程有大量的內存頁寫入,就證明你的子進程內存開銷比較大,因爲它會寫內存副本,造成很大的內存開銷;
(2)不允許單機做部署的時候,大量產生重寫;
(3)在Redis主進程寫入量比較小的時候,執行save or bgsave時候就會消耗比較小的內存;
3、硬盤
(1)開銷
RDB和AOF文件寫入,可以結合iostat,iotop分析
(2)優化
(1)不要和負載很高的硬盤部署在一起:存儲服務(文件存儲)、消息隊列等;
(2)no-appendfsync-on-rewrite = yes,重寫的過程不進行追加redis命令;
(3)根據寫入量決定磁盤類型:例如:SSD;
(4)單機多實例持久化文件目錄可以考慮分盤;