问题
如何能使得一些信息可以存储更小?
分析
常见的存储方式:
key_len + key + value_len + value + …
优化方法
- 如果key是定长的,则: key_len 可以省略
- 如果对key编号,则,key可以更短
- 如果按顺序存储,则key_len 、key都可以省略
- 如果value是定长的,则value_len 可以省略; 延伸: 对于定长的value,省略value_len,非定常的value,不省略
- 如果顺序存储,对于空字段也要保留1个字节的value_len (value_len = 0),这里可以设计1个元字段,标识哪些字段为空(或非空),这样就不再需要1个字节的value_len 了
- 设置默认值; 对于出现次数频繁的value,设置为默认值,不做存储,而且,如果出现频繁的value为多个,则可以通过2bit的信息标明默认值为1、2、3; 不宜设置太多的默认值,那样就不会节省空间了
优化原理
- 信息没有丢失,而是藏在了逻辑(或代码)当中