1. 縮短鍵值的長度
縮短值的長度才是關鍵,如果值是一個大的業務對象,可以將對象序列化成二進制數組;
首先應該在業務上進行精簡,去掉不必要的屬性,避免存儲一些沒用的數據;
其次是序列化的工具選擇上,應該選擇更高效的序列化工具來降低字節數組大小;
以JAVA為例,內置的序列化方式無論從速度還是壓縮比都不盡如人意,這時可以選擇更高效的序列化工具,如: protostuff,kryo等
2. 共享對象池
對象共享池指Redis內部維護[0-9999]的整數對象池。創建大量的整數類型redisObject存在內存開銷,每個redisObject內部結構至少占16字節,甚至超過了整數自身空間消耗。所以Redis內存維護一個[0-9999]的整數對象池,用于節約內存。 除了整數值對象,其他類型如list,hash,set,zset內部元素也可以使用整數對象池。因此開發中在滿足需求的前提下,盡量使用整數對象以節省內存。
3. 字符串優化
4. 編碼優化
5. 控制key的數量