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